我正在阅读有关隐式和显式强制的JavaScript教程。
隐式强制在后台发生了什么?
var a = "42";
var b = a * 1; //this is implicitly coerced to 42 -- the number
隐式强制是否始终将强制转换为数字?如果我们想按照下面的Python示例执行操作,该怎么办。
我很困惑,因为其他语言(例如Python)会为您提供如下结果。
a = "3";
b = 9;
print a * b; //This would print 333333333 -- the string
最佳答案
为了方便起见,我将其保留在此处,以便就隐含强制性得出一些结论:
true + false // 1
12 / "6" // 2
"number" + 15 + 3 // 'number153'
15 + 3 + "number" // '18number'
[1] > null // true
"foo" + + "bar" // 'fooNaN'
'true' == true // false
false == 'false' // false
null == '' // false
!!"false" == !!"true" // true
['x'] == 'x' // true
[] + null + 1 // 'null1'
[1,2,3] == [1,2,3] // false
{}+[]+{}+[1] // '0[object Object]1'
!+[]+[]+![] // 'truefalse'
new Date(0) - 0 // 0
new Date(0) + 0 // 'Thu Jan 01 1970 02:00:00(EET)0'
但是长话短说,规则是这样的,除非您执行显式强制,否则Javascript会根据操作和操作数类型为您代劳(因此隐式)。
您可以检查JavaScript Coercion Rules表以获得完整的预期。
note一件事: