首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入理解JS数据类型转化

把其他类型转换为数字类型

发生的情况:

1)isNaN检测的时候:

当检测的值不是数字类型,浏览器会自己调用Number方法先把它转换为数字,然后再检测是否为非有效数字。

例:

isNaN('3')=>false Number('3') -> 3 isNaN(3) -> falseisNaN('3px')=>trueNumber('3px') -> NaN isNaN(NaN) -> true

2)基于parseInt/parseFloat/Number手动转化为数字类型

3)数学运算 + , - , * , / , %

4)在基于 == 比较的时候,有时候也会把其他值转换为数字类型

转换规律

把字符串转数字

只要遇到一个非有效数字字符,结果就是NaN

'' => 0,' '  => 0,'\n' => 0,'\t' => 0,'1' => 1,'1a' => Nan

把布尔转换为数字

0 => false1 => true

把null、undefined转换为数字

null => 0undefined => NaN

把引用类型转换为数字

首先转换为字符串(toString)然后再转换为数字(Number)

复制代码

把其他类型转换为字符串

发生的情况

1)基于alert/confirm/prompt/document.write等方法输出内容的时候,会把输出的值转换为字符串,然后再输出

alert(1) => '1'

2)基于 '+' 进行字符串拼接的时候

"hello" + true => "hellotrue"

3)把引用值转换为数字的时候,首先会转换为字符串,然后再转换为数字

var obj = {};console.log(obj + 1) => "[object Object]1"

4)给对象设置属性,如果属性名不是字符串,首先转换为字符串,然后再当作属性存储到对象中

5)手动调用toString/toFixed/join/String等方法的时候

var n = Math.PIn.toFixed(2) =>'3.14'var arr = [1,2,3]arr.join('+')=>'1+2+3'

转换规律

除了对象,其他数据类型都是常规转换 无论对象是什么样,toString的结果都是**[object Object]**

把其他值转换为布尔类型

发生的情况

基于! / !! / Boolean等方法的转换

条件判断中的条件最终都会转换为布尔类型

转换规律

Boolean(''); => falseBoolean(0); => falseBoolean(null);      => falseBoolean(undefined); => falseBoolean(NaN); => false

其余全部都为true

特殊情况:数学运算和字符串拼接'+'

1、当表达式中出现字符串,就是字符串拼接,否则就是数学运算

1 + true => 2 '1' + true => '1true'

2、引用类型转换为数字,首先会转换为字符串,最后变成字符串拼接

[12] + 10 => '1210'({}) + 10 => "[object Object]10"

3、{}块级作用域  接  数学预算

{} + 10 => 10[] + 10 => '10'

"=="比较

"=="在进行比较的时候,如果左右两边的数据类型不一样,则先转换为相同的数据类型,再进行比较

"对象==对象"

地址空间相等则范围true

"对象==数字"

把对象转换为数字,然后再进行比较

"对象==布尔"

把对象和布尔都转换为数字,再进行比较

"对象==字符串"

把对象和字符串都转换为数字

"字符串==数字"

字符串转换为数字

"字符串==bool"

都转换为数字

"bool==数字"

bool转换为数字

null==undefined =>truenull===undefined=>falsenull、undefined和其他值都不相等NaN==NaN =>false

[] == false : true![] == false: true[] == true  : false![] == true : false

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200625A0NQ8S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券