【ES6】基本数据类型

时间:2022-11-10 17:26:29

前言:

前段时间在整理有关于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

Symbol常用于对象的key值,避免将已存在的属性覆盖。


声明:参考自自阮一峰老师《ES6入门》,有兴趣的可以去看下,url:http://es6.ruanyifeng.com/

备注:时间关系,关于ES6的更新不会很快。如有需要完整文档的,可以留下邮箱,单独发送>_<