JavaScript的this,arguments和closures
前提
JavaScript的作用域
1
2
3
4
5 |
// 在函数的外面,var 一个变量,函数内部就可以进行使用 var
number1 = 1; function
f1() { console.log(number1); }<br>f1(); |
1
2
3
4
5
6 |
// 在函数的内部使用var 声明一个变量并且赋值,函数内部可以进行使用,但是函数外部无法使用 function
f() { var
number = 100; console.log( "内部访问" +number); } f();<br>console.log( "外部访问" +number); |
1
2
3
4
5
6 |
// 在函数内部不使用var关键字声明的变量,只要函数一调用之后,该变量就相当于是一个全局变量 function
f() { number = 100; } f(); console.log(number); |
1
2
3
4
5
6
7
8
9 |
//f1()函数中的number变量相对于f1而言就是一个局部变量,在f2中是可见的。 function
f1() { var
number = 100; function
f2() { console.log(number) } f2(); } f1(); |
1
2
3
4
5
6
7
8 |
function
f1() { function
f2() { var
number = 100; } console.log(number); f2(); } f1(); |
1
2
3
4
5
6
7
8
9 |
function
f1() { var
number = 100; function
f2() { console.log(number); } return
f2; } var
result = f1(); console.log(result); |
JavaScript的闭包
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
function
f1() { var
n = 1; nAdd = function () { n+=1; } function
f2() { alert(n); } return
f2; } var
result = f1(); result(); // 1 nAdd(); result(); // 2 |
JavaScript的this关键字
作为函数调用
1
2
3
4
5 |
function
f() { this .x = 100; alert( this .x); } f(); //1 |
1
2
3
4
5 |
var
x = 1; function
f() { alert( this .x); } f(); //1 |
1
2
3
4
5
6 |
var
x = 1; function
f() { this .x = 0; } f(); alert(x); //0 |
作为对象方法使用
1
2
3
4
5
6
7 |
function
test() { alert( this .x); } var
o = {}; // 声明并实例化一个对象 o.x = 1; //o对象中的x为 1 o.m = test; // o对象中的m是test函数的引用 o.m(); //调用test函数,因为o.x=1所以输出1 |
JavaScript的arguments
1
2
3
4
5
6 |
function
f() { alert(arguments[0]); //test1 alert(arguments[1]); //test2 alert(arguments[2]); // test3 } f( "test1" , "test2" , "test3" ); |
参考链接
closures讲解: http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。