zoukankan      html  css  js  c++  java
  • 总结一下强大的ES6符号

    总结一下强大的ES6符号

    空值合并运算符 '??'

    第一个参数不是 null/undefined,则 ?? 返回第一个参数。否则,返回第二个参数。

    result = a ?? b,可以理解为这样:

    result = (a !== null && a !== undefined) ? a : b;
    

    可选链 "?."

    可选链 ?. 是一种访问嵌套对象属性的安全的方式。即使中间的属性不存在,也不会出现错误。

    let user = {}; // 一个没有 "name" 属性的 user 对象
    
    alert(user.name); // Error!
    alert( user?.name ); // undefined(不报错)
    

    可选链 ?. 不是一个运算符,而是一个特殊的语法结构(犀牛书:操作符)。它还可以与函数和方括号一起使用。

    扩展、剩余操作符(Rest参数与Spread操作符)

    Rest操作符

    • …rest必须是最后一个参数哦

    用法一:用于函数

    function sumAll(...args) { // 数组名为 args
      let sum = 0;
    
      for (let arg of args) sum += arg;
    
      return sum;
    }
    
    alert( sumAll(1) ); // 1
    alert( sumAll(1, 2) ); // 3
    alert( sumAll(1, 2, 3) ); // 6
    

    Rest 参数可以通过使用三个点 ... 并在后面跟着包含剩余参数的数组名称,来将它们包含在函数定义中。这些点的字面意思是“将剩余参数收集到一个数组中”。

    用法二:数组和对象的解构

    var [a, ...restArr] = [1,2,3,4]
    var {name: n, ...restObj} = {name: 'zyp',  age: 18, like: 'sleep'}
    console.log(restArr) //[2,3,4]
    console.log(restObj)//{age: 18, like: 'sleep'}
    

    扩展操作符

    用法一:将数组扩展成函数参数

    function foo(a,b, c) {
    	console.log(a);//1
    	console.log(b);//2
    	console.log(c)//3
    }
    var arr = [1,2,3]
    foo(...arr)
    
    

    用法二:数组合并

    var arr1 = [1,2,3], arr2 = [4,5,6];
    arr1.push(...arr2) // arr1为[1, 2, 3, 4, 5, 6]
    
    
    var arr1 = [1,2,3], arr2 = [4,5,6];
    arr1.push(...arr2) // arr1为[1, 2, 3, 4, 5, 6]
    
    

    用法三:字符串转数组

    var str = 'zyp';
    var strArr = [...str] //strArr为["z", "y", "p"]
    
    

    用法四:将类数组对象转化成数组(arguments)

    function foo() {
    	var argArr = [...arguments]
    	console.log(argArr) //[1,2,3,4]
    	console.log(argArr instanceof Array) //true
    }
    foo(1,2,3,4)
    
    

    arguments 是一个类数组,也是可迭代对象,但它终究不是数组。它不支持数组方法,因此我们不能调用 arguments.map(...) 等方法。

    箭头函数是没有 "arguments"(箭头函数没有上下文,意味的也没有this)

    如果我们在箭头函数中访问 arguments,访问到的 arguments 并不属于箭头函数,而是属于箭头函数外部的“普通”函数。

  • 相关阅读:
    hdu
    HUNAN 11567 Escaping (最大流)
    poj -1185 炮兵阵地 (经典状压dp)
    poj
    POJ 2955 Brackets (区间dp)
    csu
    poj
    CSU 1116 Kingdoms
    SPOJ-SQRBR Square Brackets
    退役贴
  • 原文地址:https://www.cnblogs.com/yxyc/p/14820523.html
Copyright © 2011-2022 走看看