Where is JavaScript?

那些年你不曾注意过得 - 类型转换

JavaScript是一门弱类型语言,类型转换可以被显示调用,也可以隐式地被应用在各种逻辑判断和条件判断中。

类型转换从出生开始,就伴随着属于缺陷还是有用设计的争论。作为使用者,我们的角度还达不到语言规范和特性讨论的范畴。

但是任何问题的解决初衷就是要

深入的了解,小心的求证,去其糟粕,取其精华

显式强制类型转换

StringNumber

这两者完成到字符串和到数字的转换

String(..) 遵循 ToString 规则,将值转换为字符串基本类型。Number(..) 遵循 ToNumber 规 则,将值转换为数字基本类型。

+-

  • 将操作数显式强制类型转换为数字
                  
    • 1
    • 2
    • 3
    var c = "3.14"; var d = 5+ +c; d; // 8.14
  • 将日期转换为数字
    ``` javascript
  • new Date() // 1512627035812
    ```

parseInt

              
  • 1
  • 2
  • 3
var b = "42px"; Number( b ); // NaN parseInt( b ); // 42

parseInt 解析允许字符串中含有非数字字符,解析按从左到右的顺序,如果遇到非数字字符就停止。而 Number 转换不允许出现非数字字符, 否则会失败并返回 NaN 。

              
  • 1
  • 2
  • 3
parseInt( 1/0, 19 ); // 18 parseInt( false, 16 ); // 250 parseInt( parseInt, 16 ); //15

看到这是否有些懵逼,没关系,先给原理

parseInt(..) 先将参数强制类型转换为字符串再进行解析

parseInt(1/0, 19)实际上是parseInt("Infinity", 19)。第一个字符是"I",以19为基数时值为18。第二个
字符 "n" 不是一个有效的数字字符,解析到此为止。

其余两行大家自行分析

本文于 2017-12-7  发布在  Notes  分支,

并被添加「 基础 」标签

本站使用「 署名 4.0 国际」创作共享协议