ES6 let和const认识

本文章总结自阮一峰老师ES6入门

  • let、const和var的使用和区别

    • 举个例子

        var a = [];
        for (var i = 0; i < 10; i++) {
        	a[i] = function () {
        		console.log(i);
        };
        }
        a[6](); // 10
        //如果用let代替var,输出就为6
        //var为何为10不必多说,用let声明的i,每一次的i只在当前循环有效,下一轮循环的时候的i其实是一个新的变量
        //JavaScript引擎会记住上一次循环的值,因此会输出6
        //此外for循环的一个特别之处,设置循环变量的那部分是一个父作用域,而循环体内部是一个子作用域
        for(let i=0;i<3;i++){
        	let i = 'abc';
        	console.log(i);//打印3次abc,表明两个i有不同的作用域
        }
      
    • let不存在变量提升,即必须声明后使用

    • let、const存在暂时性死区,只要块级作用域内存在let命令,它所声明的变量就绑定在这个区域,不受外界影响

        var tmp = 123;
        if(true){
        	console.log(tmp);//报错ReferenceError
        	let tmp=456;
        }
        -------------
        typeof x  ==> //报错ReferenceError
        let x
        -------------
        //未声明的变量反而不会报错,只是undefined
        typeof undeclared_variable   ==> "undefined"
        -------------
        //隐蔽的死区
        function bar(x=y,y=2){
        	return [x,y]
        }
        bar();  //报错,这里第一个参数x=y,此时y没有声明,所以报错。换成x=2,y=x不会报错
        -------------
        let x=x;   ==>ReferenceError x is not defined
        -------------
        let x = do{  //x得到块级作用域{}的返回值
        	let t=f();
        	t*t+1;
        }
      
    • let不允许在同一作用域中重复声明变量

    • const声明一个只读常量,一旦声明不可更改。同时,声明时必须立刻赋值

    • const作用域与let相同,也存在死区,只能在声明位置后使用

    • const实际保证的不是变量的值不可改变,而是变量指向的内存的地址不可改变

      • 比如:
      	const foo={} 
      	foo.prop=123;  ==>正确 
      	foo={};        ==>error : "foo" is read-only 改变地址就会报错
      
    • 如果想将对象冻结,使用Object.freeze方法:

       	const foo=Object.freeze({}); 
      	foo.prop=123; ==> 常规模式不起作用,严格模式报错
      
    • ES5声明变量只有var 和 function,ES6共有6种:加入了let,const,import,class

    记录学习ES6的总结,若有错误和建议,请指正…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值