美文网首页
《JavaScript编程精解》第一章笔记

《JavaScript编程精解》第一章笔记

作者: chuaa | 来源:发表于2018-07-25 15:10 被阅读0次

第一章 值、类型和运算符

1.1 特殊数字

在JavaScript中有三个特殊的值Infinity、-Infinity、NaN,它们虽然是数字,但看起来却跟一般的数字不一样。

Infinity、-Infinity分别表示正无穷大和负无穷大。Infinity-1的结果仍然是Infinity。

虽然NaN是数字类型的值,但我们用其表示“非数值”。比如0/0,Infinity-Infinity或者当数值运算中产生不精确或毫无意义的结果时,就用NaN表示。

console.log(typeof NaN);  // number
console.log(Infinity-1);  // Infinity
// NaN另一个奇怪的特性,ES6中两个NaN被认为相等
console.log(NaN===NaN);           // false
console.log(Object.is(NaN,NaN));  // true

1.2 比较

+0和-0在JavaScript引擎中被表示为两个完全不同的实体,而如果使用全等运算符对两者进行比较会得到为true的结果。ES6引入Object.is()方法来弥补全等运算符的不足。

console.log(-0===-0);           // true
console.log(Object.is(+0,-0));  // false

1.3 逻辑运算符

逻辑运算符的短路特性

  • 当左侧可以被转换为true时,||运算符会直接返回左侧的值,否则或返回右侧的值;
  • 当左侧可以被转换为false时,&&运算符会直接返回左侧的值,否则或返回右侧的值;
console.log(0||1);  // 1
console.log(1&&0);  // 0

1.4 自动类型转换

console.log(8*null);  // 0
console.log("5"+1);  // 51(string)
console.log("5"-1);  // 4(number)

在相同类型的值之间使用“==”符号进行比较时,其运算结果很好预测:除了NaN这种情况,只要两个值相同就会返回true。但如果类型不同,在绝大多数情况下,JavaScipt只是将其中一个值转换成另一个值的类型。但若果运算符两边有null或者undefined,那么只有两侧均为null或者undefined中的一个结果才为true。

console.log(null==0);          // false
console.log(undefined==0);     // false
console.log(null==undefined);  // true

相关文章

网友评论

      本文标题:《JavaScript编程精解》第一章笔记

      本文链接:https://www.haomeiwen.com/subject/qdipmftx.html