JavaScript, добавляющий логические значения

javascript

6727 просмотра

3 ответа

console.log(true+true); //2
console.log(typeof(true+true)); //number
console.log(isNaN(true+true)); //false

Почему сложение двух логических типов приводит к числу? Я вроде понимаю, что если бы они не равнялись (1/0 (двоичная?)), Было бы неловко пытаться выполнить арифметику с логическим типом, но я не могу найти причину этой логики.

Автор: Sterling Archer Источник Размещён: 13.11.2019 11:33

Ответы (3)


14 плюса

Решение

Это работает так, потому что так указано для работы.

Стандарт EcmaScript указывает, что если ни один из аргументов не является строкой, +предполагается , что оператор означает числовое сложение, а не конкатенацию строк. Преобразование в числовые значения явно упоминается:

Вернуть результат применения операции сложения к ToNumber (lprim) и ToNumber (rprim).

(где lprimи rprim- примитивные формы левого и правого аргумента соответственно)

EcmaScript также четко определяет To Numberпреобразование для логических значений:

Результат равен 1, если аргумент верен. Результат равен +0, если аргумент равен false.

Следовательно, true + trueэффективно означает 1 + 1, или 2.

Автор: kviiri Размещён: 12.12.2013 10:21

0 плюса

Javascript свободно набирается, и он автоматически преобразует вещи в другие вещи, чтобы соответствовать ситуации. Вот почему вы можете обойтись var xбез определения его как intилиbool

http://msdn.microsoft.com/en-us/library/6974wx4d(v=vs.94).aspx

Автор: House- 'Reinstate Monica' -man Размещён: 12.12.2013 10:16

0 плюса

Javascript - это динамически типизированный язык, потому что вам не нужно указывать, что это за тип, когда вы запускаете, например bool xили int i. Когда он видит операцию, которая на самом деле не может быть выполнена, он преобразует операнды во все, что им нужно, чтобы они могли выполнить эту операцию над ними. Это известно как приведение типов. Вы не можете добавлять логические значения, поэтому Javascript будет преобразовывать логические значения во что-то, что он может добавить, что-то вроде строки или числа. В этом случае имеет смысл привести его к числу, поскольку 1 часто используется для представления истинного значения, а 0 - для ложного. Таким образом, Javascript будет приводить trues к 1s и складывать их вместе.

Автор: scrblnrd3 Размещён: 12.12.2013 10:16
Вопросы из категории :
32x32