函数
定义函数
定义方式一
绝对值函数
function abs(x) {if (x>=0){return x;}else{return -x;}
}
一旦执行到return 代表函数结束,返回结果!
如果没有执行return,函数执行完也会返回结果,结果就是NaN / undefined
定义方式二
var abs1 = function(x){if (x>=0){return x;}else{return -x;}
}
function(x){…} 这是一个匿名函数,但是可以把结果赋值给abs,通过abs就可以调用函数!
方式一和方式二等价!!!
参数问题
参数问题: javaScript可以传任意个参数,也可以不传递参数
参数进来是否存在的问题?
假设不存在参数如何规避?
var abs1 = function(x){// 手动抛出异常来判断if (typeof x !== 'number') {throw 'Not a Number'}if (x>=0){return x;}else{return -x;}
}
arguments
是一个JS免费赠送的关键字;拿来即用,代表传递进来的所有的参数,是一个数组!
var abs2 = function(x){console.log("x===>"+x)console.log(arguments)for(let i=0; i<arguments.length;i++){console.log(arguments[i])}if (x>=0){return x;}else{return -x;}
}
问题:arguments包含所有的函数,我们有时候想使用多余的参数来进行附加操作,需要排除已有参数~
以前的写法:
var abs3 = function(a,b){console.log("a===>"+a)console.log("b===>"+b)if (arguments.length>2){for(let i=2; i<arguments.length;i++){// ....}}}
ES6引入的新特性,获取除了已经定义的参数之外的所有参数~ …
var abs4 = function(a,b,...rest1){console.log("a===>"+a)console.log("b===>"+b)console.log(rest1)
}
rest1参数名字是任意的符合规范的值,只能写在最后面,必须用…标识。
https://www.bilibili.com/video/BV1JJ41177di?p=12