前言:
前段时间在整理有关于ES6的文档,一边学习,一边总结。大致列出的一个提纲,自己对ES6的理解,仅供大家参考学习。
JS基本数据类型有String、Number、Boolean、Null、Undefined,ES6新增Symbol的基本数据类型。
1. String
1.1 扩展
startsWith、endsWith、padStart、padEnd、repeat
1.2 Unicode编码
- 对于大于\uFFFF的数值,通过\u{20BB7}可以正常识别。 ES5的
- charAt不能识别大于\uFFFF的字符,ES6提供at。
1.3 字符与Unicode之间的转换
- codePointAt //返回字符的Unicode的编码
- String.fromCodePoint() //返回Unicode编码对应的字符
1.4 模板字符串
(function(){
let [name,time] = ["Bob","today"];
let str = `Hello ${name}, how are you ${time}?`
console.log(str)
})();
模板字符串中可以使用${}引用变量,有点类似与JSP的写法。需要注意的是,模板字符串可以将空格、换行如实打印出来。
2.Number
新增方法,isFinite、isNaN、isInteger
let a = Number.isNaN("abc")
let b = Number.isNaN(Number("abc"));
console.log(a,b) //false true
在ES5中,我们知道NaN===NaN的值是false,判断一个数是不是NaN是不太容易的,ES6直接提供了isNaN方法可以判断是否是NaN。
3. Null 传导运算符
let firstName = message?.body?.user?.firstName || 'default';
console.log(firstName)
等价于
let firstName = 'default';
if(message && message.body && message.body.user && message.body.user.firstName){
firstName = message.body.user.firstName;
}
这个设计避免了大量的判断,但是尚未支持。
4. Symbol
表示独一无二的值,没有两个相等的Symbol。一般用于对象的属性名称,避免属性的误操作。
let [a,b] = [Symbol(),Symbol()];
let [c,d] = [Symbol('abc'),Symbol('abc')];
let [e,f] = [Symbol.for('swl'),Symbol.for('swl')];
let rs_a_b = Object.is(a,b);
let rs_c_d = Object.is(c,d);
let rs_e_f = Object.is(e,f);
console.log(rs_a_b,rs_c_d,rs_e_f) //false false true