【javascript】Javascript闭包
在描述闭包的实现与用途前,需要了解以下一些知识点。 执行上下文(执行上下文环境) 1 console.log(a); //Uncaught ReferenceError: a is not defined 2 3 console.log(b); //undefined 4 var b; 5 6 console.log(c); //undefined 7 var c = 10; 看上面一个例子,当直接在控制台输出a时,提示a未定义,这个很容易就理解了。不过在"var b"和"var c = 10"执行前输出b和c的值时,得到的结果却是undefined。因为代码是一条一条执行的,在执行console.log()之前,"var b"和"var c = 10"必定是还未执行的。而结果却与a的输出结果不同,这是怎么一回事? 第二种情况: 1 console.log( this ); 输出: 第三种情况: 1 console.log(f1); 2 function f1(){}; //函数声明 3 4 console.log(f2); 5 var f2 = function (){}; //函数表达式 输出: 从这里可以看出来,在一段js代码拿过来真正一句一句运行之前,浏览器做了一些“准备工作”,其中就包括对变量的声明,而不是赋值