1、全局作用域:在任意地方都能访问到
var out='1'//全局变量
function ss(){
console.log(out);//1
var tt=1
yy=0//全局变量
window.name=1//全局变量
}
ss()//1
console.log(yy)//0
console.log(window.name)//1
console.log(tt)//报错,tt is not defined
2、函数作用域:声明在函数内部,函数内部可以访问到
var out='1'//全局变量
function ss(){
console.log(out);//1
var tt=1
yy=0//全局变量
window.name=1//全局变量
function a(){
var in=0
console.log(111)
}
a()/111
}
ss()//1
a()//a is not a function
console.log(yy)//0
console.log(window.name)//1
console.log(tt)//报错,tt is not defined
3、块级作用域:使用let和const定义,在大括号里或函数内部
function ss() {
let a1=1
function a(){
let i=0
console.log(a1)//1
}
a()
if(a1){
console.log(i)//i is not defined
}
}