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企服之家,中国第一个企服评测及商务社交产业平台。 |