3.5?es6
1、const正则表达式
一、冻结对象数组
const foo = Object.freeze({}); // 常规模式时,下面一行不起做用; // 严格模式时,该行会报错 foo.prop = 123;
二、es6声明变量的6种方法spa
var function let const class importcode
2、变量的解构赋值(数组,对象,字符串)对象
一、数组取值由次序决定blog
// 报错 let [foo] = 1; let [foo] = false; let [foo] = NaN; let [foo] = undefined; let [foo] = null; let [foo] = {};
容许指定默认值。字符串
let [foo = true] = []; foo // true
注意,ES6 内部使用严格相等运算符(===
),判断一个位置是否有值。因此,若是一个数组成员不严格等于undefined
,默认值是不会生效的。it
let [x = 1] = [undefined]; x // 1 let [x = 1] = [null]; x // null
二、对象取值由位置决定io
对象的解构赋值的内部机制,是先找到同名属性,而后再赋给对应的变量。真正被赋值的是后者,而不是前者。
let { foo: baz } = { foo: "aaa", bar: "bbb" }; baz // "aaa" foo // error: foo is not defined
属性:变量
p
是模式,不是变量,所以不会被赋值。
let obj = { p: [ 'Hello', { y: 'World' } ] }; let { p: [x, { y }] } = obj; x // "Hello" y // "World"
若是p
也要做为变量赋值,能够写成下面这样。
let obj = { p: [ 'Hello', { y: 'World' } ] }; let { p, p: [x, { y }] } = obj; x // "Hello" y // "World" p // ["Hello", {y: "World"}]
三、解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。因为undefined
和null
没法转为对象,因此对它们进行解构赋值,都会报错。
let { prop: x } = undefined; // TypeError let { prop: y } = null; // TypeError
3、
字符串对象共有4个方法,能够使用正则表达式:match()
、replace()
、search()
和split()
。
match() 返回
正则表达式 /i 忽略大小写