笔记是跟着廖雪峰老师的博客写的,有需要的可以去看廖雪峰老师的博客
函数定义和调用
在JavaScript中,定义函数的方式如下:
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
function
指出这是一个函数定义;abs
是函数的名称;(x)
括号内列出函数的参数,多个参数以,
分隔;{ ... }
之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。
一旦执行到return
时,函数就执行完毕并将结果返回。
JavaScript的函数也是一个对象,上述定义的abs()
函数实际上是一个函数对象,而函数名abs
可以视为指向该函数的变量。
在这种方式下,function (x) { ... }
是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs
,所以,通过变量abs
就可以调用该函数。
var abs = function (x) {
if (x >= 0) {
return x;
} else {
return -x;
}
};
如果传入的参数变多,没有影响,不会被调用 传入的参数变少的话也不会报错, 会返回 NaN
要避免收到undefined
,可以对参数进行检查:
function abs(x) {
if (typeof x !== 'number') {
throw 'Not a number';
}
if (x >= 0) {
return x;
} else {
return -x;
}
}
JavaScript还有一个免费赠送的**关键字arguments
,**它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments
类似Array
但它不是一个Array
:
function arr(x) {
console.log('x = ' + x); // 10
for (var i=0; i<arguments.length; i++) {
console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
}
}
arr(10, 20, 30);
与之相似的还有rest
关键字 可以获得指定参数后的参数
rest参数只能写在最后,前面用...
标识
function arr(a, b, ...rest) {
console.log('a = ' + a);
console.log('b = ' + b);
console.log(rest);
}
arr(1,2,3,