JS 中的作用域与变量提拔
JS中有两种作用域 一个是全局作用域 一种是函数作用域全局作用域声明的属性 那里的可以访问
console.log(a) //undefind
var a = 0
vat b = 1
console.log(a) // 0 函数作用域中声明的属性只能在函数中访问(假如在外部访问就会爆错)
console.log(a) // Uncaught ReferenceError: a is not defined
function fun() {
console.log(a) // undefind
var a = 0;
console.log(a) // 0
} 关于JS中的变量提拔
变量提拔的概念值的是将变量的声明和方法的定义放到最上面,例如:
console.log(a, fun1, fun2) // undefind, function, undefind
const a = 0;
function fun1() {
console.log('fun1')
}
var fun2 = function() {
console.log('fun2')
} 上面的代码中,在代码中 a 定义之前就能够访问到 a ,但是输出的是undefind, 这是因为它只会将变量的定义进行提拔,而赋值不会;fun1 是一个方法,会直接提拔到最上面,所以能在最最上面输出,而fun2是一个变量,它和a一样只会将定义提拔;
特殊的let 和 const
虽然这两个也存在变量提拔,但是提拔之后并不能直接访问 ,会存在临时性死区
console.log(a) //ReferenceError: Cannot access 'a' before initialization
let a = 1;
const b = 2;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]