定义:作用域在函数声明式已经确定
var x = 1
function A(){
console.log(x)
}
function B(){
var x = 2
A()
}
B()
在window对象创建时,此时 函数A,函数B,变量x=1已经创建,他们的作用域都是全局作用域window。当B执行时,B又为内部的将要声明的变量或方法创建了一个局部作用域,此时声明了一个x = 2,此x的作用域仅限制在函数B中,外部无法访问,当函数B执行完也就销毁。接着函数B中调用了函数A,函数A属于window对象,A执行时,需要打印一个参数x,A中未定义局部变量x,所以将会向上寻找,深入一点来说是往自己原型链上寻找,此时window对象中有一个x,函数A即打印输出这个x,x = 1。注意:函数A不是在B中声明的,它和函数B是同级,也就访问不到B中声明的x = 2。
var和let const的区别
<script>
var x = 100
let y = 100
const Z = 100
</script>
var声明的全局变量是window对象的属性,而let声明的变量是块级作用域,体现在这里的是把