作用域
全局作用域: 在程序任何位置都和一访问 函数内部作用域:在一个函数内部下声明变量,变量只能在函数内部访问,函数外不可以访问 块级作用域:es6中let/const在大括号中定义,大括号外部不可以访问
词法作用域/静态作用域
写好代码时它的作用域就确定了,JavaScript 遵循的就是词法作用域
定义
当在JavaScript 中使用一个变量的时候,首先JavaScript 会尝试在当前作用域下寻找该变量,如果没有找到,再向上层作用域中寻找,以此类推直到找到该变量或者是已经到了全局作用域
如果在全局作用域中仍然找不到该变量 1.全局范围得隐式生命该变量 或者直接报错
var sex = '男';
function person() {
var name = '张三';
function student() {
var age = 18;
console.log(name); // 张三
console.log(sex); // 男
}
student();
console.log(age); // Uncaught ReferenceError: age is not defined
}
person();
上述代码主要主要做了以下工作:
student函数内部属于最内层作用域,找不到name,向上一层作用域person函数内部找,找到了输出“张三”student内部输出sex时找不到,向上一层作用域person函数找,还找不到继续向上一层找,即全局作用域,找到了输出“男”- 在
person函数内部输出age时找不到,向上一层作用域找,即全局作用域,还是找不到则报错