-
闭包
闭包是指函数可以使用函数之外定义的变量。-
简单的闭包
在 JavaScript 中,使用全局变量是一个简单的闭包实例。比如:
var num = 3;
function foo(){
console.log(num);
}
foo(); //打印 3 -
复杂的闭包
function f1(){
var num1 = 6;
function f2(){
var num2 = 7;
}
console.log(num1 + num2);
}
f1();在上述代码中函数 f2 能够访问到它外层的变量 num,但是 f1 是不能访问 f2 中的变量的,因此我们可以把 num2 作为 f2 的返回值,再把 f2 作为返回值就可以访问到了。
function f1(){
var num1 = 6;
function f2(){
var num2 = 7;
return num2;
}
return f2();
console.log(num1 + num2);
}
f1()
-
-
arguments对象 实参列表
在函数代码中,使用特殊对象 arguments,无需明确指出参数名,我们就能访问它们。第一个参数是 arguments[0],第二个参数是 arguments[1],以此类推。比如:
function foo() {
console.log(arguments[0]);
console.log(arguments[1]);
}
foo(2,3);//打印 2 3
还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。来看一个遍历参数求和的例子:
function add() {
var sum =0;
for(var i=0; i<arguments.length; i++){
sum += arguments[i];
}
return sum;
}
add(); // 0
add(1); // 1
add(1,2); // 3
add(1,2,3); // 6 -
Function对象
1)用 Function 对象创建函数的语法如下:
var function_name = new Function(arg1, arg2, …, argN, function_body)
注:每个参数都必须是字符串,function_body 是函数主体,也就是要执行的代码。
例子:
var add = new Function(“a”,“b”,“console.log(a+b);”);
add(2,5); //打印7再看一个例子:
var add = new Function(“a”,“b”,“console.log(a+b);”);
var doAdd = add;
doAdd(2,5); // 打印7
add(2,5); // 打印7
在上述例子中,变量 add 被定义为函数,然后 doAdd 被声明为指向同一个函数的指针。用这两个变量都可以执行该函数的代码,并输出相同的结果。因此,函数名只是指向函数的变量,那么我们可以把函数作为参数传递给另一个函数,比如下面的例子:
function addF(foo,b,c){
foo(b,c);
}
var add = new Function(“a”,“b”,“console.log(a+b);”);
addF(add,2,5); // 打印72)Function 对象的 length 属性
函数属于引用类型,所以它们也有属性和方法。length 属性声明了函数期望的参数个数。
例子:
var add = new Function(“a”,“b”,“console.log(a+b);”);
console.log(add.length); // 打印23)Function 对象的方法
Function 对象也有与所有对象共享的 valueOf() 方法和 toString() 方法。这两个方法返回的都是函数的源代码。
例子:
var add = new Function(“a”,“b”,“console.log(a+b);”);
add.valueOf();
add.toString();
08--闭包,arguments对象,Function对象
最新推荐文章于 2022-05-11 22:05:05 发布