JavaScript Неявное Принуждение - PullRequest
0 голосов
/ 04 октября 2018

Я читаю учебник 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

1 Ответ

0 голосов
/ 04 октября 2018

Я оставлю это здесь для вашего удобства, чтобы сделать некоторые выводы в отношении неявного принуждения:

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 , чтобы получить полную перспективу.

Одна вещь для примечания :

Приведения JavaScript всегда приводят к одному из скалярных примитивов, таких как строка, число или логическое значение.Нет принуждения, которое приводит к сложному значению, такому как объект или функция.

...