es6详解之一let、const

关于变量的定义es6之前我们使用var去声明一个变量。
es6开始引入了let、const来声明变量
那么这种跟传统的var有什么区别呢
总结下来主要是这个几个方面的区别:
1、作用域的区别

	var temp_c = "test";
       let temp_d = "test let";
      (function() {
        console.log("temp_c", temp_c, window.temp_c); //temp_c test test
        console.log("temp_d", temp_d, window.temp_d); //temp_d test let undefined
      })();

这里可以看到在全局同时用 var ,和 let 定义了一个变量,在函数也都可以同时访问到,但是这里有一个区别,就是我用 window.temp_c 访问的时候发现,用 var 定义的变量是可以直接访问的。

 	{
        var var_a = "var_a";
        let let_a = "let_a";
      }
      console.log("var", var_a); //var var_a
      console.log("let", let_a); //let.html:19 Uncaught ReferenceError: let_a is not defined

2、变量提升

	 console.log("before temp_a", temp_a, window.temp_a); //temp_c test test
      var temp_a = "temp_a";
      console.log("after temp_a", temp_a, window.temp_a); //temp_d test let undefined
      // console.log("before temp_b", temp_b);
      let temp_b = "temp_b";
      console.log("after temp_b", temp_b);
这里 var 定义的 temp_c 存在变量提升,第一次打出来的是undefined
let在定义之前使用会报错

3、重复声明

      var var_a = "ddd";
      var var_a = "ccc";
      console.log("var_a", var_a);
	 let let_b = "ddd";
      let let_b = "cc";
      //Uncaught SyntaxError: Identifier 'let_b' has already been declared

4、暂时性死区

	 var temp_c = "test";
      let temp_d = "test let";

      (function() {
        console.log("temp_c", temp_c, window.temp_c); //temp_c test test
        //let.html:15 Uncaught ReferenceError: Cannot access 'temp_c' before initialization
        let temp_c = "test";
        console.log("temp_d", temp_d, window.temp_d); //temp_d test let undefined
      })();

还是刚刚那个例子我在函数里面加了一个temp_c的定义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值