共计 1495 个字符,预计需要花费 4 分钟才能阅读完成。
1.
函数的申明
JavaScript 有三种申明函数的办法。
(1)function 命令
function
命令申明的代码区块,就是一个函数。function
命令前面是函数名,函数名前面是一对圆括号,外面是传入函数的参数。函数体放在大括号外面。
function print(s) {console.log(s);
}
(2)函数表达式
除了用 function
命令申明函数,还能够采纳变量赋值的写法。
var print = function(s) {console.log(s);
};
采纳函数表达式申明函数时,function
命令前面不带有函数名。如果加上函数名,该函数名只在函数体外部无效,在函数体内部有效。
var print = function x(){console.log(typeof x);
};
x
// ReferenceError: x is not defined
print()
// function
(3)Function 构造函数
第三种申明函数的形式是 Function
构造函数。
var add = new Function(
'x',
'y',
'return x + y'
);
// 等同于
function add(x, y) {return x + y;}
2. 函数的反复申明
如果同一个函数被屡次申明,前面的申明就会笼罩后面的申明。
function f() {console.log(1);
}
f() // 2
function f() {console.log(2);
}
f() // 2
3.length 属性
函数的 length
属性返回函数预期传入的参数个数,即函数定义之中的参数个数。
function f(a, b) {}
f.length // 2
下面代码定义了空函数 f
,它的length
属性就是定义时的参数个数。不论调用时输出了多少个参数,length
属性始终等于 2。
4.toString()
函数的 toString()
办法返回一个字符串,内容是函数的源码。
function f() {a();
b();
c();}
f.toString()
// function f() {// a();
// b();
// c();
// }
5.arguments 对象
(1)定义
因为 JavaScript 容许函数有不定数目的参数,所以须要一种机制,能够在函数体外部读取所有参数。这就是 arguments
对象的由来。
arguments
对象蕴含了函数运行时的所有参数,arguments[0]
就是第一个参数,arguments[1]
就是第二个参数,以此类推。这个对象只有在函数体外部,才能够应用。
var f = function (one) {console.log(arguments[0]);
console.log(arguments[1]);
console.log(arguments[2]);
}
f(1, 2, 3)
// 1
// 2
// 3
失常模式下,arguments
对象能够在运行时批改。
(2)与数组的关系
须要留神的是,尽管 arguments
很像数组,但它是一个对象。数组专有的办法(比方 slice
和forEach
),不能在 arguments
对象上间接应用。
如果要让 arguments
对象应用数组办法,真正的解决办法是将 arguments
转为真正的数组。上面是两种罕用的转换方法:slice
办法和逐个填入新数组。
var args = Array.prototype.slice.call(arguments);
// 或者
var args = [];
for (var i = 0; i < arguments.length; i++) {args.push(arguments[i]);
}
(3)callee 属性
arguments
对象带有一个 callee
属性,返回它所对应的原函数。