深入理解Javascript闭包概念
一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部能够直接读取全局变量。 Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 还有一方面,在函数外部自然无法读取函数内的局部变量。 Js代码 function f1(){ var n=999; } alert(n); // error 这里有一个地方须要注意,函数内部声明变量的时候,一定要使用var命令。假设不用的话,你实际上声明了一个全局变量! Js代码 function f1(){ n=999; } f1(); alert(n); // 999 -------------------------------------------------------------------------------------------------------- 二、怎样从外部读取局部变量? 出于种种原因,我们有时候须要得到函数内的局部变量。可是,前面已经说过了,正常情况下,这是办不到的,仅仅有通过变通方法才干实现。 那就是在函数的内部,再定义一个函数。 Js代码