代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
'use strict';
//函数定义方式一
//定义绝对值函数
function abs(x) {
if (x >= 0){
return x;
} else{
return -x;
}
}
//一旦执行到return代表函数结束,返回结果
//如果没有执行return,函数执行完也会返回结果,结果就是undefined
//函数定义方式二
var fun = function (x , y) {
if (x > y){
console.log(x);
} else {
console.log(y);
}
}
//这种定义是一个匿名函数,但是可以把结果赋值给fun,通过fun就可以调用函数!
//方式一和方式二等价
//参数问题:JavaScript函数可以传递任意个参数,不会报错,也可以不传递参数
//参数传递是否存在问题?
//如果不存在,我们通过增加一个判断条件来进行规避
var fun2 = function (x) {
//手动抛出异常来判断
if (typeof x != 'number'){
throw 'Not a number';
} else if (x >= 0){
return x;
} else {
return -x;
}
}
//arguments关键字,是一个JavaScript免费赠送的关键字
//他代表,传递进来的所有参数,是一个数组
var loop = function (x) {
console.log("x=>" + x);
for (var i = 0 ; i < arguments.length ; i++){
console.log(arguments[i]);
}
}
//问题:arguments包含所有函数,我们有时候想使用多余的参数来进行附加操作,需要排除已有参数
//ES6 新特性 rest 获取除了已定义的参数之外的所有参数
//以前
var a = function (x) {
if (arguments.length > 2){
for (var i = 2 ; i < arguments.length ; i++){
//..........
}
}
}
//现在
function f(a,b,...rest) {
console.log("a=>" + a);
console.log("b=>" + b);
console.log(rest);
}
//rest参数只能写在最后面,必须用...标识
</script>
</head>
<body>
</body>
</html>