Функциональность операций, которые являются общими для разных типов

#javascript

#javascript

Вопрос:

когда я запускаю этот код на javascript и не понимаю, почему ответ равен 2:

1”- -”1

Комментарии:

1. В математике, когда вы вычитаете отрицательное число, вы фактически добавляете его положительное значение. Итак 1 - -1 === 2 (и в JS, при использовании вычитания для строк они автоматически преобразуются в числа. С помощью, вы получите "1" "1" === "11" , потому что он просто объединит их)

2. Вы имеете в виду это ("1") - (-"1") ? Тогда это просто базовая математика, там JavaScript преобразует строку в числа (целые числа), а затем добавляет как два минус результата в addtion.

Ответ №1:

В Javascript есть две разные операции, обозначаемые символом dash ( - ): вычитание, которое является двоичной операцией, как в 1-2 , и операция унарного отрицания, как в -5 . Обе операции преобразуют свои аргументы в числа, поэтому ваше выражение интерпретируется как

 Number("1") <subtract> (<negate> Number("1"))
 

что приводит к 1 - (-1) , что есть 2 .

Обратите внимание, что это контрастирует с другим «двойным» оператором , который выполняет преобразование чисел только в унарной форме:

 10    "1"  // 11
10    "1"  // "101"