zoukankan      html  css  js  c++  java
  • 【学】ECMA6的新特性1

    ECMA6的新特性1

    let特性:
    1、不允许重复声明
    2、没有预解析
    3、块级作用域

    一对{}包括的区域称为代码块
    块级作用域指一个变量或者函数只在该区域才起作用。
    例1:

    console.log(a);//会报错,a is not defined
    let a = 3; //原来如果用var声明到调用后,不会报错,而是undefined,说明用var预解析了,但是用let不会
    

    例2:

    //如果申明i的时候用原来的var,则每次定时器打出来的都是i,之前解决的方案就是利用函数的自执行,将每次的i传入函数中使用,但是如果用let申明i,就解决了问题,打出了0-9的数字。同样,也可以用在选项卡的例子中
    for(let i=0; i<10; i++){
        setTimeout(function(){
            console.log(i)
        },50); 
    }
    

    const申明常量
    在定义之后值是固定不变的,即为常量
    常量的值不能修改,但是如果常量保存的是一个对象,那么对象的属性是可以被修改的。
    可以理解为,对象本身是在堆内存中,它的值本身是可以修改的,但是它的引用地址在栈内存中,一旦用const申明后,引用地址是不能改的

    const a = 1;
    a = 2;
    console.log(a);
    //会报错:TypeError: Assignment to constant variable.
    
    const a = {
    	name:'leo'
    };
    a.name = 'momo';
    console.log(a.name);//修改对象本身内部的值是可以的
    

    解构赋值:Destructuring ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
    数组的解构赋值:按照对应的顺序解构。

    var arr = [1,2,3];
    var [a,b,c] = arr;
    console.log(a,b,c)//可以解析出1,2,3,相当于a,b,c的值都已经赋上,只要结构对应没有问题
    
    var obj = {
    	foo:function(){
    	},
    	o:{
    	},
    	arr:[],
    	str:'abc'
    }
    var {foo,arr,str,o} = obj; //并没有按照原有obj的顺序,但是同样可以赋值,只要对象中的Key的名字能对应找到即可
    console.log(foo,arr,str,o);
    //如果var {foo1,arr} = obj;因为原来obj中没有foo1这个键,会出现undefined,所以如果要对对象解构赋值,需要和原对象的Key名称一致,顺序无所谓
    
    //还可以做值的交换,原来要用到中间临时变量,但是现在可以这么做
    var y = 1;
    var x = 2;
    var [x,y] = [y,x];
    console.log(x,y); //这里x和y的值已经交换了
    
  • 相关阅读:
    Client-Side Template Injection with AngularJS
    502 BAD GATEWAY-k8s的cgroup限制了apache的可用内存
    alertmanager的web页面显示UTC时间的问题
    结构化数据
    天马行空 + 行业趋势
    elasticsearch备份脚本
    mongodb的安装部署-备份
    redis安装-备份-恢复 -- redislive -- web管理工具
    elasticsearch 的post put 方式的对比 setting mapping设置
    用elasticsearchdump备份恢复数据
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5778339.html
Copyright © 2011-2022 走看看