js类型转换

39 阅读2分钟

类型转换

数字类型转换

undefinedNaN
null0
false/true0/1
string去掉首尾空白字符(空格、换行符 \n、制表符 \t 等)后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN。

布尔类型转换

  • 直观上为“空”的值(如 0、空字符串、null、undefined 和 NaN)将变为 false。
    • 不包括空数组,空对象
  • 其他值变成 true。

数学运算

一元运算符 二元运算符会进行类型转换(Number)

二元运算符 + 是例外,在运算元包含字符串时,用于字符串拼接

字符串比较

在比较字符串的大小时,JavaScript 会使用“字典(dictionary)”或“词典(lexicographical)”顺序进行判定。

换言之,字符串是按字符(母)逐个进行比较的。

比较算法

  1. 首先比较两个字符串的首位字符大小。
  2. 如果一方字符较大(或较小),则该字符串大于(或小于)另一个字符串。算法结束。
  3. 否则,如果两个字符串的首位字符相等,则继续取出两个字符串各自的后一位字符进行比较。
  4. 重复上述步骤进行比较,直到比较完成某字符串的所有字符为止。
  5. 如果两个字符串的字符同时用完,那么则判定它们相等,否则未结束(还有未比较的字符)的字符串更大。

不同类型比较

当对不同类型的值进行比较时,JavaScript 会首先将其转化为数字(number)再判定大小。

null和undefined比较

null===undefined // false null==undefined //true javascript中特殊规定在非严格模式下相等

null和undefined在>,<,>=,>=中会被转化为数字0和NaN

NaN 是一个特殊的数值型值,它与任何值进行比较都会返回 false。