作用域:函数和变量生效区域
分三种情况:
1) 全局作用域:任何不在函数中或大括号中声明的变量,都是在全局作用域下。
var a = 10;
function fun(){
console.log(a);
}
fun();
2) 函数作用域:只能在函数内部访问,函数外部访问会报错。
function fun1(){
var a = 10;
console.log(a) //10
}
fun1();
console.log(a) //报错
3) 块级作用域 let,const
在大括号内部可以访问变量,括号外部不能访问变量
{
var sex = 'nan'
let userName = 'zs';
const age = 20;
console.log(userName, age) //zs,20 可以拿到
}
console.log(sex) //nan 可以访问
console.log(userName, age) //报错
//作用域链
js查找变量,首先js引擎会在当前作用域下查找,如果没找到会去上层作用域查找,
以此类推直到找到变量或找到全局作用域,如果还没找到会报错。