参考书《ECMAScript 6入门》
http://es6.ruanyifeng.com/

变量的解构和赋值

本质上:只要模式匹配,左边的变量就能被赋予右边对应的值

原则: 解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefined和null不能转化为对象,所以如果右边是undefined或者null,则会解构报错

数组类型 :数组类型按照顺序匹配

let [x,y,z] = [1,2,3]
x = 1
y = 2
z = 3

对象类型 :对象类型按照属性名匹配

let {key1 : value1,key2 : value2} = {key2 : "v2",key1 : "v1"}
value1 = "v1"
value2 = "v2"

字符串||数字||布尔类型

let [a,b,c,d,e] = "admin"
a = 'a'
b = 'd'
c = 'm'
d = 'i'
e = 'n'

let {toLowerCase : method} = 'admin'
method = String.prototype.toLowerCase

let {toFixed : method1} = 3
method1 = Number.prototype.toFixed

let {toString : method2} = true
method2 = Boolean.prototype.toString

默认值
a.只有当右边对应的赋值严格等于undefined时,左边变量才能取默认值
b.惰性求值
c.默认值可以引用其他已经解构的变量的值

let [x = 1,y = 2] = [] //此时x的默认值是1,y的默认值是2  []等同于 [][0] = undefined,[][1] = undefined .....
let [x = 1,y = 2] = [null,null] //只有当x,y的值是undefined的时候,才能把默认值给x,y,此处null 不等于 undefined ,所以x = null, y = null
let {x = 3} = {x : undefined} // x = 3
let {x = 3} = {x : null} //x = null

function f(){
  return "abc";
}
let [x = f()] = [1]
//此时x = 1,而不是会输出"abc",因为右边对应x变量的值是可以正常赋值的,所以不执行x =f()语句

let [x = 1, y = x] = [3] //x = 3,y = 3

不完全解构 : 等号左边的模式只匹配一部分等号右边的值

let [x,y] = [3] // x = 3 , y = undefined
let {k1 : a, k2 : b} = {k2 : "123"} // a = undefined, b = "123"

圆括号
    允许使用 : 赋值语句的非模式部分
    不允许使用
    a.变量声明
    b.函数参数
    c.赋值语句模式

嵌套解构
    数组
    let [x, ...rest] = [1, 2, 3, 4];//x = 1 rest = [2,3,4]
    let [x,[y,z]] = [1,[2,3]] // x = 1, y = 2, z = 3
    对象
    let obj = {
        obj2: {
          k1 : 'v1',
          k2: 'v2'
        }
    };
    let { obj2, obj2: {k1 : x, k2 : y} } = obj;
    x // "v1"
    y // "v2"
    obj2 // {k1 : 'v1', k2 : 'v2'}

ES6学习笔记(2)----变量的解构和赋值的更多相关文章

  1. ES6学习笔记之变量的解构赋值

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...

  2. ES6学习 第二章 变量的解构赋值

    前言 该篇笔记是第二篇 变量的解构赋值. 这一章原文链接: 变量的解构赋值 解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构 ...

  3. ES6 学习笔记(二)解构赋值

    一.数组的解构赋值 1.基本用法 ES6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,该操作即为解构 如: let [a,b,c]=[1,2,3]; console.log(a,b,c) ...

  4. es6学习2:变量的解构赋值

    一:数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo bar ba ...

  5. ES6学习笔记(4)- 解构

    一.解构的意义 二.对象解构 三.数组解构

  6. ES6学习笔记(二)变量的解构与赋值

    1.数组的解构赋值 1.1基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1 ...

  7. ES6学习----let、const、解构赋值、新增字符串、模板字符串、Symbol类型、Proxy、Set

    这篇es6的学习笔记来自于表哥 表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 ES6就是JS6,JS的第 ...

  8. ES6第三节:变量的解构赋值

    ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.下面我们看实际的例子: 一.数组解构: let [a,b,c] = [1,2,3]; console.log(a); //a ...

  9. ES6系列_3之变量的解构赋值

    ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 解构有三种类型: 1.数组的解构赋值 (1)简单的数组解构 以前,我们给变量赋值是直接单个指定值,比如: let a=0; ...

随机推荐

  1. HDU 2457/POJ 3691 DNA repair AC自动机+DP

    DNA repair Problem Description   Biologists finally invent techniques of repairing DNA that contains ...

  2. c中的变量

    1 变量类型 1.1 static global or static .data/.bss 1.2 automic stack,its relevant to os kernel and compil ...

  3. [MAC] Load Crypto.Cipher.ARC4 Failed, Use Pure Python Instead.

    MAC启动GoAgent,出现Load Crypto.Cipher.ARC4 Failed, Use Pure Python Instead. 解决方法:为Python安装pycrypto,可通过Py ...

  4. POJ1984 Navigation Nightmare —— 种类并查集

    题目链接:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K T ...

  5. Android控件之HorizontalScrollView 去掉滚动条

    在默认情况下,HorizontalScrollView控件里面的内容在滚动的情况下,会出现滚动条,为了去掉滚动条, 只需要在<HorizontalScrollView/>里面加一句 and ...

  6. BZOJ4561:圆的异或并(扫描线+set||splay||线段树)

    在平面直角坐标系中给定N个圆.已知这些圆两两没有交点,即两圆的关系只存在相离和包含.求这些圆的异或面    积并.异或面积并为:当一片区域在奇数个圆内则计算其面积,当一片区域在偶数个圆内则不考虑. I ...

  7. css 实现元素四角图片样式,元素的大小不定

    demo 效果 css body { margin:; } .popup p{ margin-bottom:20px; margin-left:200px; } .popup p span{ disp ...

  8. 使用maven新建类目录是,报错The folder is already a source folder.的解决办法

    转自:https://www.cnblogs.com/loger1995/p/6539139.html 我们有时候新建一个webapp的maven项目时,生成的目录结构是这样子的: 缺少maven规范 ...

  9. 【194】Windows 上使用 wget

    本文包括两部分,首先就是在 Windows 使用 wget 来下载文件,这样固然很好,然而问题并非这么简单,在 PowerShell 4.0 版本中增加了 Invoke-WebRequest 的别名 ...

  10. 01_创建一个新的activity&activity配置清单文件

    今天开始学四大组件.今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者.四大组件,咱们一天一个.Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面.创建多个 ...