原文地址:JavaScript type coercion explained
类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转换为数值,对象转换为布尔值,等等)。任何类型,无论是原始类型还是对象,都是类型强制的有效主体。回想下,js中的基本类型有:string, boolean, null, undefined , Symbol ( ES6中新增的)。
作为实际中类型强制的示例,请查看JavaScript比较表,这说明了松散的等式是如何实现的。==
运算符行为不同a
和b
类型。这个矩阵看起来很可怕,因为隐式强制==
运算符是这样做的,而且很难记住所有这些组合。你不必这么做,只要学习基本类型的强制原则就行了。
本文深入介绍了类型强制在JavaScript中的工作方式,并将为您提供必要的知识,以便您能够自信地解释以下表达式的计算结果。在这篇文章的结尾,我将给出答案并加以解释。
true + false
12 / "6"
"number" + 15 + 3
15 + 3 + "number"
[1] > null
"foo" + + "bar"
'true' == true
false == 'false'
null == ''
!!"false" == !!"true"
[‘x’] == ‘x’
[] + null + 1
[1,2,3] == [1,2,3]
{}+[]+{}+[1]
!+[]+[]+![]
new Date(0) - 0
new Date(0) + 0
是的,这个列表中充满了你作为开发人员可以做的非常愚蠢的事情。在90%的用例中,最好避免隐式强制。将此列表视为一项学习练习,以测试您对类型强制操作的知识。如果你觉得无聊,你可以找到更多的例子wtfjs.com.
顺便说一句,有时在JavaScript开发人员的面试中,您可能会遇到这样的问题。所以,继续读