首页 > Web开发 > 详细

面试题汇总 JS(ES6)

时间:2019-09-28 09:27:17      阅读:95      评论:0      收藏:0      [点我收藏+]

一、新增数据类型Symbol

  概念:

    Symbol代表独一无二的

    Symbol类型的值通过Symbol函数来生成,同时Symbol函数返回的值的唯一的

    Symbol函数可以接收字符串作为参数,但是即使相同参数返回的值也是唯一的

  作用:

    属性私有化

    数据保护

        //没有参数的情况
        var s1=Symbol();
        var s2=Symbol();
        s1===s2;    //false

        //有参数的情况
        var s1=Symbol("foo");
        var s2=Symbol("foo");
        s1===s2;    //false

        var mySymbol=Symbol();
        //第一种写法
        var a={};
        a[mySymbol]="Hello!";
        //第二种写法
        var a={
            [mySymbol]:"Hello!"
        };
        //第三种写法
        var a={};
        Object.defineProperty(a,mySymbol,{value:"Hello!"});
        //枚举symbol的key值
        Object.getOwnPropertySymbols(obj);
        //注意:Symbol作为对象的key值不能被fon in进行遍历

 

二、块级作用域

  概念:在ES6中,凡是{}包裹的代码都是块级作用域,凡是在块级作用域中用let const声明的变量都在有一个暂时性死区。

        {
            let a=20;
        }
        console.log(a);//报错

 

三、var let const声明变量

  var

    支持变量声明与解析

    不支持块级作用域

    允许重复声明

  let

    不支持变量声明与解析

    支持块级作用域

    不允许重复声明

    用let声明的变量或者方法只会在代码块中生效

    {

      let a=10;

      var b=20;

    }

    console.log(a);  //报错

  const

    不支持变量声明与解析

    支持块级作用域

    不允许重复声明

    声明常量,一旦声明不可修改

    声明常量必须赋值,不能和var一样声明后再定义

 

四、解构赋值

  概念:允许按照一定的格式,从对象和数组中提取值

        //数组解构
        let [a,b,c]=[1,2,3];

        //对象解构---对象解构时,key值必须要一一对应
        let {name,age}={name:"孙艺珍",age:20};

        //对象解构+别名
        let {name:_name,age:_age}={naem:"孙艺珍",age:20};

        //多重解构
        let {obj:{name},arr:[a,b]}={obj:{name:"孙艺珍",arr:[10,20]}};
        
        //案例
        let {left:l,top:t}=document.getElementById("box");

 

五、扩展运算符

  概念:将数组或对象转换成参数序列,使用逗号分隔的序列。

  作用:

    1、数组、对象的合并

    2、函数剩余参数

    3、替代arguments

        //数组合并
        var arr1=[10,20,30];
        var arr2=[40,50,60];
        var newArr=[...arr1,...arr2];

        //展开数组
        console.log(Math.max(...arr));

        //对象合并
        var obj1={width:100,height:100};
        var obj2={left:100,top:100};
        var newObj={...obj1,...obj2};

 

六、字符串模板

  

 

面试题汇总 JS(ES6)

原文:https://www.cnblogs.com/wuqilang/p/11601419.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!