笔记:隐式转换规则

学习并背诵全文

原始值

类型UndefinedNullStringBooleanNumber
undefinednull所有字符串true false所有数字/NaN

引用类型

Object的成员叫对象,包括Array,Function,Math,Date,JSON,RegExp等除了原始值之外的所有的类型的成员。

valueOf / toString

ObjectStringArrayNumberDateBooleanFunction
valueOf原始值原始值原始值原始值毫秒时间戳原始值string
toString[Object Object]原始值join方法返回的结果数字字符串本地时间字符串'true'/'false'string

Boolean(x)

XUndefinedNullStringBooleanNumberObject
Boolean(X) = true--非空字符串true非0 非NaN所有
Boolean(X) = falseundefinednull空字符串false0 NaN

Number(x)

XUndefinedNullStringBooleanNumberObject
Number(X) = number--全为数字-原样返回desc: 先调用valueOf再转换为Number
Number(X) = 0-null'0'false0-
Number(X) = 1--'1'true1-
Number(X) = NaNundefined-包含数字之外的字符-NaN-

String(x)

XUndefinedNullStringBooleanNumberObject
String(x)'undefined''null'原样返回'true'/'false'toString结果先转为原始值,然后调用toString

Object(x)

xundefinednullBooleanNumberStringObject
Object(x){}{}原始值为X的Boolean对象原始值为X的Number对象原始值为X的String对象原值输出
Object(undefined) // {}
Object(null)  // {}
Object(true)   // Boolean {true}
Object(false)  // Boolean {false}
Object(1)      // Number {1}
Object('hello') // String {"hello"}
Object({ a: 1 }) // {a: 1}
复制代码

场景

转换为Number
  • 一元 +, - 运算符
+{} = NaN
+'20' = 20
-'20' = -20
+[] = 0;
+[1] = 1;
+[1, 2] = NaN
复制代码
  • ++, -- 运算符

  • +, -, *, /, % 计算

需要注意的是,当 + 计算有字符串参与计算时,会转换为字符串。

  • >, <, >=, <= 比较运算符, 操作数都不是String类型时

  • ==, != 操作数中只有String类型和Number类型,或者其中有一个是Boolean

转换为Boolean
  • && ! || 运算
  • 条件运算
  • if, while, do-while, for
转换为String
  • + 号运算,其中一个操作符为字符串
  • 比较运算,其中一个操作符为字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值