Что делает эта строка javascript?

Если посмотреть на условные обозначения jslint, я увидел эту строку:

total = subtotal + (+myInput.value);

Какова цель второго "+"?

Ответы

Ответ 1

Унарный плюс существует для полноты, по сравнению с обычным унарным минусом (-x). Однако он имеет побочный эффект, на который опирается здесь, на листинг myInput.value на Number, если это что-то еще, например String:

alert(1+'2'); // 12
alert(1+(+'2')); // 3

Ответ 2

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

Ответ 3

Оператор унарный + превращает вещи в число.

Ответ 4

Символ + должен указывать на число, как говорили другие. Он нужен там, потому что входные данные формы всегда являются строковыми значениями, а добавление строки в другую переменную объединяет их вместе в новую строку, даже если строка выглядит как число.

Ответ 5

Оператор унарного плюса, арифметически говоря, является noop. Но, как и все другие чисто арифметические операторы, он преобразует свой аргумент в тип номера JavaScript и поэтому может использоваться как сокращенное выражение для явного приведения.

Явное выполнение типов в JavaScript выполняется путем вызова соответствующих функций конструктора без использования оператора new.

Например,

Number(foo)

преобразует foo в примитив номера типа, тогда как new Number(foo) дополнительно создаст объект-оболочку для примитива и, следовательно, будет эквивалентен

Object(Number(foo))

Подобным образом использование + - это использование !! для преобразования в логический тип.