Skip to content

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

@littlewin-wang

Description

@littlewin-wang

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

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

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

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

显式强制类型转换

StringNumber

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

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

+-

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

parseInt

var b = "42px";
Number( b ); // NaN
parseInt( b ); // 42

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

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" 不是一个有效的数字字符,解析到此为止。

其余两行大家自行分析

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions