参考: winter 的重学前端
为什么有的编程规范要求用void 0代替undefined?
因为JavaScript的代码undefined是一个变量,而并非是一个关键字,这是JavaScript语言公认的设计失误之一,所以,我们为了避免无意中被篡改,我建议使用 void 0 来获取undefined值。(void 运算来把任一一个表达式变成 undefined 值)
字符串有最大长度吗?
String 用于表示文本数据。String 有最大长度是 2^53 - 1,这在一般开发中都是够用的,但是这个所谓最大长度,并不完全是你理解中的字符数。因为String 的意义并非“字符串”,而是字符串的 UTF16 编码,我们字符串的操作 charAt、charCodeAt、length 等方法针对的都是 UTF16 编码。所以,字符串的最大长度,实际上是受字符串的编码长度影响的。
0.1 + 0.2不是等于0.3么?为什么JavaScript里不是这样的?
由于 JavaScript 中浮点数的运算精度导致的,要进行此类比较要使用如下方式:
console.log( Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON)
ES6新加入的Symbol是个什么东西?
Symbol 是 ES6 中引入的新类型,就像Number、String、和 Boolean 一样。每个创建的 symbol 都是一个独一无二的值。
为什么给对象添加的方法能用在基本类型上?
.
运算符提供了装箱操作,它会根据基础类型构造一个临时对象,使得我们能在基础类型上调用对应对象的方法。
网友评论