function test () { c=5; alert(c); } test();
当我们在执行test函数时,浏览器并不会报c未定义的错误,因为在js中,变量定义是通过var关键字,如果没有通过var定义,而直接进行引用,js引擎会自动把这个c定义为全局变量。
unction test () { c=5; alert(c); } test(); (function test2 () { alert(c) })();
所以test2函数也可以拿到这个c。
function test2 () { alert(c); console.log(c); var c=2; }
test2();
这个js引擎在编译时会先将c定义,但是不会给他赋值,赋值要在函数执行的时候,所以不会报c is not defined
但是c会赋值为undefined
原文:http://www.cnblogs.com/djlxs/p/5068483.html