编程语言
首页 > 编程语言> > JavaScript隐式强制

JavaScript隐式强制

作者:互联网

我正在阅读有关隐式和显式强制的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

JavaScript coercions always result in one
of the scalar primitive values, like string, number,
or boolean. There is no coercion that results in a complex value like
object or function.

标签:coercion,javascript
来源: https://codeday.me/bug/20191108/2008501.html