课程《重学前端》的一些记录

2019-07-07  本文已影响0人  明灭_

模块一:JavaScript


1. 为何有的编程规范要求用viod 0代替undefined

(function(){
  var a;
  var undefined = 3;
  if(a === undefined) {
    console.log('a===undefined');
  } 
  if(a !== undefined) {
    console.log('a!==undefined');
  }
})()

结果:a!==undefined

2. 字符串是否有最大长度?

String 用于表示文本数据。String有最大长度是2^53 - 1,这在一般开发中都是够用的,但是有趣的是,这个所谓最大长度,并不完全是你理解中的字符数。因为 String 的意义并非“字符串”,而是字符串的 UTF16编码,我们字符串的操作 charAtcharCodeAtlength等方法针对的都是UTF16编码。所以,字符串的最大长度,实际上是受字符串的编码长度影响的。

3. JS中的字符串无法变更

来看下面这个例子:

var str = 'hello';
str[0] = 1;
console.log(str); // 'hello'

str = 'hello world';
console.log(str); // 'hello world'

4. 为何0.1 + 0.2 不等于0.3

console.log(0.1 + 0.2 === 0.3); // flase;

输出的结果是false,说明两边的值不相等。这是浮点运算的特点。浮点运算的精度问题导致等式左右两端的结果并不是严格相等的,而是差了一个微小的数。
正确的比较方法是使用js提供的最小精度值:

 console.log( Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON); // true

5. ES6新加入的Symbol是什么

6. 为何给对象添加的方法能用在基本类型上

上一篇 下一篇

猜你喜欢

热点阅读