字符串
//ES5
var string="<div><p>233</p></div>"
var string="<div>
<p>233</p>
</div>"//报错
var string="<div>/
<p>233</p>/
</div>"//必须在后面加上斜杠,但是有风险,如果斜杠后面不小心打了空格(看不出来)也会发生语法错误
var string="<div>"+
"<p>233</p>"+
"</div>"//这种方法省去了空格的风险
ES6
var string=`
<div>
<p>233</p>
</div>`//包含四个回车
ES5
var txt="223"
var string="<div>/
<p>--text--</p>/
</div>".replace("--text--",txt)
var string="<div>"+
"<p>"+txt+"</p>"+
"</div>"
ES6
var string=`
<div>
<p>${txt}</p>
</div>`
解构赋值
数组的结构赋值:按顺序
ES5
var a = 1;
var b = 2;
var 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'
对象的简写
let name='jack'
let sayHi=function(){
return 'hello
}
const person={
name,
sayHi,
//run:function(){
// return true
//},
//es6之前要function,es6智慧可以省略
run(){
return true
}
}
伪数组变真数组方法
1 Array.prototype.slice.call(伪数组)
2 [].slice.call(伪数组)
3 Array.from(伪数组) //ES6
4 [...伪数组] //ES6