### 函数 function
> 在js中函数就是一个方法(一个功能体)基于这个函数,一般是为了实现某个功能。
```
var total =10;
total+=10;
total=total/2;
total=total.toFixed(2);//保留小数点后面2位(数字有一个方法toFixed用来保留小数点后面的位数)
...
在后续的代码中,我们依然想实现相同的操作(加10除以2),需要重新编写
//=>这样导致代码大量冗余,不利于开发,降低了开发效率。如果进行对这个功能的代码封装,后期执行即可。
```
**`函数诞生的目的就是实现封装`:把实现一个功能的代码封装到一个函数中,后期想要实现这个功能,只需要把这个函数执行即可,不必要再次编写重复代码,起到了"`低耦合高内聚`(减少页面冗余代码,提高代码的重复使用率)"`的作用**
```javascript封装
function fn(){
var total=10;
total+=10;
total/=2; == (total=total/2)
total=total.toFixed(2);
console.log(total);
}
fn();
fn();
...
想用多少次我们就执行多少次函数即可
====
ES3标准中:
//=>创建函数
function 函数名 ( [参数] ){
函数体:实现功能的js代码
}
//=>函数执行
函数名();
====
ES6标准中:
//=>创建函数
let 函数名(变量名) = ([参数]) =>{
函数体
}
函数名();
例如:
let fn=()=>{
let total=10;
};
fn();
```
函数作为引用数据类型中的一种,它也是按照引用地址来操作的,接下来学习函数运行机制:
**`函数运作机制`:**
```
var obj = {
name:'前端' ,
age:9
};
function fn(){
var total=10;
total+=10;
total/=2; == (total=total/2)
total=total.toFixed(2);
console.log(total);
}
fn();
 
1.函数也是引用类型,首先会开辟一个新的堆内存,把函数体中的代码当做“字符串”存储到内存中(对象向内存中存储的是键值对)
2.把开辟的堆内存地址赋值给函数名(变量名)
此时我们输出fn(切记不是fn())代表当前函数本身,如果我们执行fn(),这是把函数执行,所以是否加小括号是两种不同本质的操作
【函数执行的目的】
目的:把之前存储到堆内存的代码字符串变成真正的js代码自上向下执行,从而实现应有的功能。
1.函数执行首先会形成一个私有的作用域(一个供代码执行的环境,也是一个栈内存)
2.把之前在堆内存中存储的字符串复制一份过来,变成真正的js代码,在新开辟的作用域中自上而下执行
```
`js中的三座大山:1.堆栈内存寄闭包 2.面向对象 3.异步编程`
### 函数中的参数
> 参数是函数的入口: 当我们在函数中封装一个功能,发现一些原材料不确定,需要执行函数的时候用户传递进来才可以,此时我们基于参数的机制,提供出入口即可。
```
//=>此处的参数叫形参:入口,形参是变量(n/m就是变量)
function sum(n,m) {
//=>n和m分别对应要求和的两个数字
var total=0;
total=n+m;
console.log(total);
}
//=>此处函数执行传递的值是实参:实参是具体的数据值 10,20
sum(10,20); //=>n=10,m=20
sum(10); //=>n=10,m=underfined
sum(); //=>n和m都是underfined
sum(10,20,30);//=>n=10,m=20, 30没有形参变量接受
```

JS系列:函数function的更多相关文章

  1. js的函数-function

    function函数 function的英文是[功能],[数] 函数:职责:盛大的集会的意思 在js里,就是函数的意思.在Java里叫做方法. 定义函数 function fun(参数){ //函数体 ...

  2. JavaScript系列----函数(Function)篇(4)

    1.什么是函数? 在W3C中函数的定义是这么说的:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.   诚然,从这种抽象的定义中我们得不到什么有价值的东西.下面,举例来列举出函数的几种定义 ...

  3. 自定义JS Map 函数

    // 自定义JS Map 函数 function Map() { var map = function (key, value) {//键值对 this.key = key; this.value = ...

  4. js 深入原理讲解系列-currying function

    js 深入原理讲解系列-currying function 能看懂这一题你就掌握了 js 科里函数的核心原理 不要专业的术语,说人话,讲明白! Q: 实现 sum 函数使得以下表达式的值正确 cons ...

  5. Js函数function基础理解

    正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...

  6. Node.js系列基础学习-----回调函数,异步

    Node.js基础学习 Node.js回调函数 Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步.回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都 ...

  7. js中使用function定义类、实例化,函数的调用方法

    function Test002(name, age){ name, age, this.printInfo = function(){ //定义的公有方法 console.log(name, age ...

  8. js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))

    ( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达 ...

  9. 在webView 中使用JS 调用 Android / IOS的函数 Function

    最近做一个项目,混合了NativeCode 和 HTML,为了便于JS 调用App的一些方法,统一封装一个Js方法,记录如下 Android 端首先要再WebView中允许JS的调用 WebView ...

随机推荐

  1. materialize 读取单选按钮

    $('input[name='xxx']:checked')

  2. 关于 Nginx 配置的一些疑惑, Nginx 根据cookie 进行rewrite

    网站目录结构如下:/public/en.html/public/zh_cn.html/public/index.php 之前所有的非静态资源请求都交给 index.php现在要把首页的请求 不走PHP ...

  3. C++ auto 完成类型自动推导与使用

    c++11 允许声明一个变量或对象(object)而不需要指明其类型,只需说明它是auto. 1.如: auto i = 42: //i是整型 double   f(); auto d=f(); // ...

  4. pipelinewise 学习二 创建一个简单的pipeline

    pipelinewise 提供了方便的创建简单pipeline的命令,可以简化pipeline 的创建,同时也可以帮我们学习 生成demo pipeline pipelinewise init --n ...

  5. ACM数据结构-树状数组

    模板: int n; int tree[LEN]; int lowbit(int x){ return x&-x; } void update(int i,int d){//index,del ...

  6. js使用WebSocket,java使用WebSocket

    js使用WebSocket,java使用WebSocket 创建java服务端代码 import java.net.InetSocketAddress; import org.java_websock ...

  7. 冰多多团队-第三次Scrum会议

    冰多多团队-第三次Scrum会议 会议基本情况 会议时间:4月9日 21:30 - 21:45 会议地点:新主楼F座2楼沙发休息处 工作情况 团队成员 已完成任务 待完成任务 zpj 接入Action ...

  8. 闲话Dicom

    最近在准备一场有关DICOM应用的讲座,整理了一下思路.想了几个问题,发现挺有意思的,想与大家共同分享.接触过DICOM,应该了解普通DICOM 文件包含的四级属性,病人,检查,序列,影像.每一级别需 ...

  9. js获取form表单所有数据

    代码如下: <script type="text/javascript"> // 获取指定form中的所有的<input><select>对象 ...

  10. 把ngnix注册为linux服务 将Nginx设置为linux下的服务 并设置nginx开机启动

    一.创建服务脚本 vim /etc/init.d/nginx 脚本内容如下 #! /bin/sh# chkconfig: - 85 15 PATH=/usr/local/nginx/sbin/ DES ...