美文网首页
ES6知识点整理——let和const及解构赋值

ES6知识点整理——let和const及解构赋值

作者: 小姑凉喜欢无脸男 | 来源:发表于2018-09-09 17:17 被阅读33次
1、 let与const

常量const [常量声明的时候要赋值;常量是不能被修改的,但可以修改对象的值。因为对象是引用类型,const 指向的是对象引用地址,只要地址不变就符合 const 定义]
Es5写法
Object.defineProperty(window,”PI2”,{
value: 3.1415926,
writable: false
})
Es6写法: const PI = 3.1415926
变量let let a = 1 [let声明的变量只在块作用域有效;es6强制开启严格模式,变量未声明不能引用,否则会报引用错误;let不能重复定义变量]

function test(){
  for(let i=1;i<3;i++){
     console.log(i);//1 2
  }
  console.log(i);//uncaught ReferenceError: i is not defined
  //let a = 1;
  let a = 2;
}

function last(){
  const PI=3.1415926;
  const k={
    a:1
  }
  k.b=3;
  console.log(PI,k);
}

test();
last();
2、解构赋值

什么是解构赋值:语法上就是赋值的作用。
解构:左边一种结构,右边一种结构,左右一一对应进行赋值。

解构赋值的分类:
数组解构赋值、对象解构赋值、字符串解构赋值、布尔值解构赋值、函数参数解构赋值、数值解构赋值

1)数组结构赋值

{
  let a,b,rest;
  [a,b]=[1,2];
  //let a=1,b=2;之前的写法
  console.log(a,b);//1  2
}

... 可以把其它的归为一个数组

{
  let a,b,rest;
  [a,b,...rest]=[1,2,3,4,5,6];
  console.log(a,b,rest);//1 2 [3,4,5,6]
}

延伸:可以给c赋值为默认值,防止没有成功配对赋值时候值为undefind情况

{
  let a,b,c,rest;
  //[a,b,c]=[1,2];
  [a,b,c=3]=[1,2];
 //console.log(a,b,c);//1 2 undefined
  console.log(a,b,c);//1 2 3
}

在es5中不好实现的代码,可以通过结构赋值轻松解决,如下

  1. 变量交换
{
  let a=1;
  let b=2;
  [a,b]=[b,a];
  console.log(a,b);//2 1
}
  1. 取函数return回来的值
{
  function f(){
    return [1,2]
  }
  let a,b;
  [a,b]=f();
  console.log(a,b);//1 2
}
  1. 当函数返回多个值时,可以选择性的去接收某几个变量
{
  function f(){
    return [1,2,3,4,5]
  }
  let a,b,c;
  [a,,,b]=f();
  console.log(a,b);//1 4
}
  1. 不知道返回数组的长度时,后面的数可以接收为数组
{
  function f(){
    return [1,2,3,4,5]
  }
  let a,b,c;
  [a,,...b]=f();
  console.log(a,b);//1 [2,3,4,5]
}

2)对象解构赋值

{
  let a,b;
  ({a,b}={a:1,b:2})
  console.log(a,b);//1 2
}
{
  let o={p:42,q:true};
  let {p,q}=o;
  console.log(p,q);//42 true
}

对象解构赋值的默认值处理

{
  let {a=10,b=5}={a:3};
  console.log(a,b);
}

对象解构赋值场景:

{
  let metaData={
    title:'abc',
    test:[{
      title:'test',
      desc:'description'
    }]
  }
  let {title:esTitle,test:[{title:cnTitle}]}=metaData;
  console.log(esTitle,cnTitle);
}

相关文章

  • ES6新特性有哪些?快来看看吧(二)

    昨天讲到ES6中新增的let 和 const 今天来看看别的吧; 今天讲一下解构赋值: 什么解构赋值? 解构赋值就...

  • ES6知识点整理——let和const及解构赋值

    1、 let与const 常量const [常量声明的时候要赋值;常量是不能被修改的,但可以修改对象的值。因为对象...

  • js基础 - 草稿

    1 常用es6 class类继承;箭头函数;let const;新增的数据类型Symbl;set和map;解构赋值...

  • es6

    let && const 解构赋值&剩余运算符&展开 解构赋值 对象的解构赋值 剩余运算符 展开 Object.d...

  • ES6入门学习

    学到哪写到哪,就是不从let开始 ES6, 7知识点列表 let, const 对象与数组解构 Class继承的语...

  • 个人面试总结

    JS Q:常用es6语法A:let、const、promise、模板字符串、解构赋值、拓展运算符、箭头函数 Q:有...

  • ECMA6学习-变量声明 和 数组对象解构赋值

    变量声明 和 数组对象解构赋值,本编主要学习 let const 使用语法,注意事项。以及数组和对象的解构赋值。 ...

  • let 和 const、解构赋值

    let 和 const 块级作用域 let 和 const 声明的变量,只在块级作用域有效(大括号包裹的部分就是块...

  • 解构赋值内容整理

    解构赋值 使用let const生明过的变量在解构赋值时不能再次声明。 解构赋值分3种结果:1、解构成功。2、不完...

  • ES6学习-1

    声明变量使用 let , const 解构赋值: let [a,b,c] = [1,2,3]; let [a,[b...

网友评论

      本文标题:ES6知识点整理——let和const及解构赋值

      本文链接:https://www.haomeiwen.com/subject/facdgftx.html