блок кода 1:Вопрос оператора в JS
var a = (1 + - + + + - + 1);
alert(a); //2
Почему равно 2?
блок кода 2:
var a = (1+-+++-+1);
alert(a); //ReferenceError: Invalid left-hand side expression in prefix operation
блок кода 1:Вопрос оператора в JS
var a = (1 + - + + + - + 1);
alert(a); //2
Почему равно 2?
блок кода 2:
var a = (1+-+++-+1);
alert(a); //ReferenceError: Invalid left-hand side expression in prefix operation
При использовании пространства в вашем выражении она отбрасывания предыдущего оператора, поэтому код блока две ошибки и блок кода один в основном делает:
var a = (1 + 1);
Собственно, это всего лишь basic math. Он сгруппировался и оценил
1 + (- (+ (+ (+ (- (+ 1))))))
Он не отбрасывает предыдущих операторов. Он просто использует основной закон, который -
умноженный на +
is -
. Например, следующий только группируясь как 1 - (+ 1)
, который 1 - 1
который 0
1 - + 1 // 0
Теперь, когда вы не используете пространство, то Javascript интерпретирует его как операторы инкремента и декремента и, следовательно, ошибки.
Во-первых, другой ответ правилен в отношении «странного» поведения в первом случае. Причина, по которой вы получаете ReferenceError
во втором случае без пробелов, состоит в том, что два из этих +
s обрабатываются как команда приращения ++
.
1+-+(+(+-1))
не даст вам ошибку
Каков ваш ожидаемый результат? – Sim1