ES6笔记(二)

作者: 同Young不同样 | 来源:发表于2018-02-04 00:33 被阅读21次

数组的解构赋值

ES6允许从数组和对象中提取值,对变量进行赋值。如果解构不成功的话,变量的值就会等于undefined.程序实例:

let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
foo // 1
bar // 2
baz // 3
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
let [x, , y] = [1, 2, 3];
x // 1
y // 3
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z // []

解构不仅可以用于数组也可以用于对象。对象的解构与数组解构不同,数组的元素是按照次序排列的,变量的取值是由他的位置决定的,对象的属性没有次序,变量必须和属性同名,才能取到正确的值。程序实例:

var { bar, foo } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
var { baz } = { foo: "aaa", bar: "bbb" };
baz // undefined

字符串的解构值

字符串也可以解构赋值,字符串会被转换成一个类似于数组的对象。程序实例:

const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"

数值和布尔值的解构赋值

解构赋值的时候,如果等号右边是数值和布尔值,就会先转换成对象。程序实例:

let {toString: s} = 123;
s === Number.prototype.toString // true
let {toString: s} = true;
s === Boolean.prototype.toString // true

解构赋值的规则是,只要等号右边的值不是对象,就先将其转换为对象。

函数参数的解构赋值

函数的参数进行解构赋值的例子:

function add([x, y]){
return x + y;
}
add([1, 2]); // 3

圆括号问题

不能使用圆括号的情况

  1. 变量声明的语句中不能带有圆括号。
  2. 函数的参数中,模式不能带有圆括号。
  3. 赋值语句中,不能将整个模式或者嵌套模式中的一层放在圆括号中。

解构赋值的用途

1、变换变量的值

[x, y] = [y, x];

2、从函数返回多个值

function example() {
return [1, 2, 3];
}
var [a, b, c] = example();
// 返回一个对象
function example() {
return {
foo: 1,
bar: 2
};
}
var { foo, bar } = example();

3、函数参数的定义

// 参数是一组有次序的值
function f([x, y, z]) { ... }
f([1, 2, 3]);
// 参数是一组无次序的值
function f({x, y, z}) { ...}

4、提取JSON数据

var jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);   // 42, "OK", [867, 5309]

相关文章

  • Ant Design Pro的知识储备

    Less 笔记 Less 官方文档 ReactJs笔记 ReactJs官方文档 ES6笔记 ES6文档 dvaJs...

  • [总结]ES6 Array

    学习es6时做得小笔记

  • ES6_note

    ES6笔记 es6 - 解构 数组的 解构赋值 let [a, b, c] = [1, 2, 3]; 这种写法属于...

  • Node.js笔记七:es6

    Node.js笔记七:es6 es6是javascript的新一代语法规范,现在很多新的库都是基于新的es6语法规...

  • ES6 学习笔记(二)

    ES6 学习笔记,如有错误,欢迎指正。 笔记只记录了一些个人认为需要记住的知识点。 参考:ECMAScript 6...

  • ES6基础笔记二

    ES6 箭头函数、函数扩展 ES5: function add(a,b){return a+b;}console....

  • ES6学习笔记(二)

    Set和Map Set Set类似于数组,但是里面成员的值不能重复。Set构造函数可以传入一个数组用于初始化 Se...

  • ES6学习笔记(二)

    六、数组热闹的循环 新增方法有:arr.forEach() 、arr.map() 、arr.filter()、ar...

  • ES6 笔记(常量&&变量)

    ES6 笔记(常量&&变量) 变量&&常量 新特性 ES6 新增了let命令,用来声明变量。它的用法类似于var,...

  • React与ES6(一)开篇介绍

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的prope...

网友评论

    本文标题:ES6笔记(二)

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