类型转换
数字类型转换
| undefined | NaN |
| null | 0 |
| false/true | 0/1 |
| string | 去掉首尾空白字符(空格、换行符 \n、制表符 \t 等)后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN。 |
布尔类型转换
- 直观上为“空”的值(如 0、空字符串、null、undefined 和 NaN)将变为 false。
-
- 不包括空数组,空对象
- 其他值变成 true。
数学运算
一元运算符 二元运算符会进行类型转换(Number)
二元运算符 + 是例外,在运算元包含字符串时,用于字符串拼接
字符串比较
在比较字符串的大小时,JavaScript 会使用“字典(dictionary)”或“词典(lexicographical)”顺序进行判定。
换言之,字符串是按字符(母)逐个进行比较的。
比较算法
- 首先比较两个字符串的首位字符大小。
- 如果一方字符较大(或较小),则该字符串大于(或小于)另一个字符串。算法结束。
- 否则,如果两个字符串的首位字符相等,则继续取出两个字符串各自的后一位字符进行比较。
- 重复上述步骤进行比较,直到比较完成某字符串的所有字符为止。
- 如果两个字符串的字符同时用完,那么则判定它们相等,否则未结束(还有未比较的字符)的字符串更大。
不同类型比较
当对不同类型的值进行比较时,JavaScript 会首先将其转化为数字(number)再判定大小。
null和undefined比较
null===undefined // false null==undefined //true javascript中特殊规定在非严格模式下相等
null和undefined在>,<,>=,>=中会被转化为数字0和NaN
NaN 是一个特殊的数值型值,它与任何值进行比较都会返回 false。