字符串、解构赋值

字符串

//ES5
var string="

233

" var string="

233

"//报错 var string="
/

233

/
"//必须在后面加上斜杠,但是有风险,如果斜杠后面不小心打了空格(看不出来)也会发生语法错误 var string="
"+ "

233

"+ "
"//这种方法省去了空格的风险 ES6 var string=`

233

`//包含四个回车
ES5
var txt="223"
var string="
/

--text--

/
".replace("--text--",txt) var string="
"+ "

"+txt+"

"+ "
" ES6 var string=`

${txt}

`

解构赋值

数组的结构赋值

ES5
let a = 1;
let b = 2;
let c = 3;
ES6
let [a, b, c] = [1, 2, 3];

let [foo, [[bar], baz]] = [1, [[2], 3]];
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 // []


如果解构不成功,就为undefined
let [foo] = [];
let [bar, foo] = [1];
//foo都为undefined

对象的解构赋值

let { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"

let { bar, foo } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
对象的解构与数组有一个重要的不同。
数组的元素是按次序排列的,变量的取值由它的位置决定;
而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

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

let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"

let obj = { first: 'hello', last: 'world' };
let { first: f, last: l } = obj;
f // 'hello'
l // 'world'

伪数组变真数组方法

1   Array.prototype.slice.call(伪数组)
2   [].slice.call(伪数组)
3   Array.from(伪数组)       //ES6
4   [...伪数组]             //ES6


你可能感兴趣的:(字符串、解构赋值)