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
.
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:160 плюса
Javascript - это динамически типизированный язык, потому что вам не нужно указывать, что это за тип, когда вы запускаете, например bool x
или int i
. Когда он видит операцию, которая на самом деле не может быть выполнена, он преобразует операнды во все, что им нужно, чтобы они могли выполнить эту операцию над ними. Это известно как приведение типов. Вы не можете добавлять логические значения, поэтому Javascript будет преобразовывать логические значения во что-то, что он может добавить, что-то вроде строки или числа. В этом случае имеет смысл привести его к числу, поскольку 1 часто используется для представления истинного значения, а 0 - для ложного. Таким образом, Javascript будет приводить true
s к 1
s и складывать их вместе.
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- javascript Удаление элементов с помощью Array.map в JavaScript
- javascript Прокрутка переполненных DIV с помощью JavaScript
- javascript API Карт Google - проблемы с классом GLatLngBounds
- javascript Проверка десятичных чисел в JavaScript - IsNumeric ()
- javascript Как я могу украсить код JavaScript с помощью командной строки?
- javascript Динамически загружать файл JavaScript
- javascript Экранирование строк HTML с помощью jQuery
- javascript Обнаружение неопределенного свойства объекта
- javascript Как сравнить HTML-сущность с JQuery
- javascript Есть ли HTML напротив <noscript>?
- javascript Есть ли функция "существует" для jQuery?
- javascript Как заставить клиентов обновлять файлы JavaScript?
- javascript Замена n-го экземпляра совпадения с регулярным выражением в Javascript
- javascript Сделать окно браузера мигающим в панели задач