JS作用域&作用域链
作用域的概念: 变量作用域的概念:变量作用域就是指一个变量可以使用的范围 全局作用域:代码在程序的任何地方都能被访问,window的内置属性都具有全局作用域,是js中最外层作用域 函数作用域:在固定的代码片段才能被访问,通过函数创建一个独立的作用域,函数是可以嵌套的,所以作用域也是可以嵌套的 作用域的做大用处就是隔离变量,不同作用域下同名变量不会有冲突 变量取值:到创建这个变量的函数的作用域中取值 var age = 18; // age是在全局作用域中声明的变量,即为全局变量 function f1(){ console.log(name); // 此处可以访问到name变量,输出undefined // 这里为何输出undefined,是由于变量提升造成的,见附录1 // name是f1函数内部声明的变量,所以name变量的作用域就是在f1函数内部 var name = "hello"; console.log(name); // 可以访问到name变量 console.log(age); // age是全局作用域中声明的变量,所以在f1函数内部也可以访问 } console.log(age); // 此处可以访问 console.log(age); // 此处不可以访问name,因为name变量在函数f1内部声明的,属于局部变量,所以在全局作用域中无法访问。 作用域链