TEST12138

TEST12138

长路漫漫,唯心作伴。

前端基础之js加法隐式转换

先做个小测试,不要百度和写代码测试
下面的输出都是什么

1 + 1

'1' + 1

1 + true

NaN + 1

NaN + '1'

null + 1

null + '1'

[1] + 1

[1,2] + [1]

[1] + {n : 1}

如果说你对上面这些运算有一些模糊不清的地方,那么估计你加法隐式转换没有搞清楚
加法运算的规则到底是什么呢
一张图让你明明白白

image

ok,我们来看个例子

image

看着上面的图来捋一捋
两边都是原始类型,都不是字符串,所以都要转为数字类型

image

相当于 0 + NaN,所以最后结果是 NaN

再比如上面里的 [1] + 1

image

是含有对象类型的,要调用 valueOf

image

调用之后不是原始类型,那就要调用 toString

image

转成原始类型了,走上面的步骤,含有字符串,全部转为字符串相加,所以结果是 '11'

再看一个例子

image

它这里报错了,提示无法把这个对象转换为原始类型,这是因为 valueOf 和 toString 无法把 obj 转换为原始类型

这些东西,往往会出现在面试题里面,考察你对知识点有没有理解到位,大家努力吧

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。