变量

js声明的一些杂点

var 与 let 声明的细点

1、在全局作用域下声明的区别

  a = 10 // a是直接挂到window对象上的 没有变量提升
  var a = 2 // a是直接挂到window对象上的(只有在全局作用域才会挂上window)
  let a = 19 // 不会挂到window身上

2、使用var/function声明有变量提升 而let和const的没有的

3、使用var/function声明是可以重复声明的,后面的声明就直接忽略,相当于是一次赋值

​ 而使用let和const是不允许重复声明的

	let a = 2
    console.log(a) // 代码一行都不会打印 在浏览器开辟栈内存自上而下执行代码之前 不仅有变量提升话会开启词语法检测 检测当前代码是否会出现语法错误(SyntaxError) 如出现错误 则一行都不执行
    let a = 3
    console.log(a)

4、var 和 let 一起声明的时候 也会发生重复声明报错 Uncaught SyntaxError: Identifier ‘a’ has already been declared(只要栈内存中存在这个变量,再使用const或var声明变量就会报错)

5、function的重复声明是后面的覆盖前面的声明,而var的声明是前面一声明就会忽略后面的声明

6、不管条件是否成立 变量提升不会缺席 但是function就只会提升声明 不会定义

	console.log(a) // undefined
    if(! ("a" in window)){
      var a = 1
    }
    console.log(a)// undefined

7、let解决了暂时性死区问题

 // console.log(a) // Uncaught ReferenceError: a is not defined
 console.log(typeof a) // 没用let 直接输出undefined 用了let 报错 Cannot access 'a' before initialization
 let a

8、var a = b =10 相当于 var a = 10; b = 10; var a = 10 , b = 10; 相当于 var a = 10; var b = 10;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值