知识 结束 开始 总结 小括号 接收 ons 设定
一、函数基本知识
1、function: 函数 -> 具备某个功能的一个方法。方法本身是没有什么意义的,只有执行这个方法实现了对应的功能才有自己的价值。
2、函数由两部分组成: 创建一个函数、执行这个函数
function 方法名 (){
// 函数体: 存放的某个功能实现的 JS 代码
}
方法名 ();
创建一个函数可以执行多次,一般情况下,每次执行函数和上一次执行没有任何的关系
- function sum() {
- var total = null;
- total = 1 + 1;
- console.log(total)
- }sum // 后面不加小括号,代表的就是当前函数本身
- sum(); //sum后面加小括号,代表的是执行当前函数 函数执行的目的:把函数之前存储的那些字符串 变成js代码,然后在让js代码从上到下的执行。
创建一个函数的过程:
1)、首先开辟一个新的内存空间,浏览器为其分配一个 16 进制的地址,我们假设地址为: xxxfff000
2)、把函数体中的 JS 代码当做 "字符串" 存储到内存空间中。
3)、再把这个地址赋值给当前的函数名 sum->xxxfff000
函数执行的过程
1)、函数执行的时候,首先会提供一个供函数体中代码执行的环境 -> 私有作用域
2)、把函数体中的代码字符串变为代码从上到下执行
注意:函数在执行的时候,首先会形成一个新的私有作用域,供函数体中的代码从上到下执行,形成的那个私有作用域, 把我们函数体中的代码都包起来了,保护里面的私有变量,不受外界的干扰, 我们把函数执行的时候形成的这种保护机制叫做 "闭包"
二、形参
扩展: 我们想把 sum 这个方法升级,随便给我两个数都能求和 -> 形参
- function sum(num1, num2) { //num1和num2 就是我们设定的形参"变量" 是当前函数的两个入口
- var total = null;
- total = num1 + num2;
- console.log(total)
- }
- sum(100, 200); //执行的时候 只需要把对应形参的值传递给函数即可
- sum(10) // num1 = 10 num2 = undefined 没有传递的形参默认是undefined
三、return
在函数里面 return 就是当前函数提供给我们的出口,因为不提供出口的话,闭包的机制导致了在函数体的外面
无法获取里面的值,如果想在外面使用里面的值,值需要通过 return 把 total 的值返回到外面即可 --》"返回值机制"
外面想用哪个值,我们就把哪个值返回 ->return total ; 并不是把变量返回给外面,而是把变量存储的值返回给外面
var total = sum(100,200) // 首先把函数 sum 执行,然后把 sum 执行后的返回值(看 sum 执行的返回结果,只需要看 sum 中是否存在 return,有 return,return 后面返回的值是什么,那么函数的返回值就是啥;如果 sum 中没有 return 那么默认的返回值是 undefined)赋值给外面的变量 total
在函数体中 return 下面的代码都不会执行了 -> 终止函数体中代码执行的作用
四、arguments
"任意数求和": 随便给我几个数(具体几个不知道,就没有办法定义形参的个数),我都能求出和
arguments:函数天生自带的(不管写没写形参,也不管是否传递值,arguments 始终都是存在的),用来接收函数传递进来的参数值的集合
typeof arguments // object 它是一个对象数据类型的值,它是以数字作为索引,索引从零开始逐级递增,索引 0 存储的是第一个参数,索引 1 存储的是第二个参数值,索引 n 存储的是第 n+1 个参数值。。。有一个叫做 length 的属性代表一共传递了多少个参数; 它不是数组,我们把它称之为类数组
callee:function sum ()... 它还有一个自己特殊的属性 callee,代表当前函数本身
- function sum() {
- var total = null;
- for (var i = 0; i) {
- var cur = Number(arguments[i]) //对于非有效数字我们不在进行累加,防止最后结果是NaNif(isNaN(cur)){ continue;}
- total += cur;
- }
- return total;
- }
五、匿名函数
实名函数:起了名字的函数就是实名函数
匿名函数:没有名字的函数 就是匿名函数
在 js 中常用到的匿名函数有两种方式:
1)、自执行函数: 定义函数和函数执行一起完成了
;(function(num){ 前面加;的作用是为了防止上面代码结束不加;
}(100))
2)、函数表达式: 把函数定义的部分当做一个值赋值给一个变量或者元素的某一个行为
var f = function(){}
js 学习总结 ---- 函数
来源: http://www.bubuko.com/infodetail-2134404.html