变量作用域 有作用范围和生命周期. 静态作用域: 词法作用呀,由程序的定义位置决定,在编译的时候就决定了生存周期和作用范围. 跟代码执行顺序无关,通过代码嵌套来解析. 例子: var x = 10; function fun () { //编译的时候,X已经初始化了. alert(x); } function foo () { var x = 20; fun(); //运行fun的时候,x已经编译过了,就是10 } foo(); //10 动态作用: 程序运行时决定的.类似于C++的动态绑定.
首先说下js作用域链:由于js变量都是对象的属性,对象又可以是对象的属性,最终到达window,所以变量-------window就是一条作用域链: 先说下变量作用域: var a=10;function test(){ console.log(a);----------undefined var a = 5; console.log(a);----------5}test(); test() 方法内:console.log(a)中变量a寻找自己的定义,发现var a = 5;已经有定义了,所以
工作面试中我们经常会遇到这样的题目: var a = "Hello"; function b() { alert(a); var a = "World"; alert(a); } b(); 正确的运行结果是:undefined,world 为什么是这个结果呢? 首先我们要明确几点: js作用域最外界的是window作用域,同时,js是以函数为块作用域的,每一个函数都是一个快作用域 js预编译阶段,作用域内通过 var 定义的变量都会被提到作用域最前面,并赋值unde