Будьте осторожны:
!a
оценивается как истинное или ложное. Если преобразование a
в логическое значение равно true
, тогда !a
оценивается как ложное.
Все натуральные числа оцениваются как true
. Так что !a
будет оцениваться как ложное. Сравнение с использованием двойных равных ==
к 1 проверит, что логическое !a
с логическим 1
или true
. Так что, если a
является положительным целым числом, как я подозреваю, тогда ваше утверждение if
ВСЕГДА оценивается как ложное.
Если вы хотите проверить, что-то НЕ является чем-то другим, вам нужно изменить первые равные в вашем операторе сравнения (===
) на !
.
например. var a = 2; if(a!==1) { // do something }
<- A равно 2, и поэтому сравнение if будет иметь значение true, поскольку <code>a не равно 1
.
В вашем коде у нас есть:
var a = 2;
if(!a==1){
// a was 2 (or boolean true by default)
// but using ! has negated its boolean value
// so !a evaluates to boolean false
// which is being compared to 1 (evaluating to boolean true)
// so this if statement will never get here
}
Надеюсь, это поможет
P.S. Помните ваших операторов сравнения:
!"hello world" == 0 // true
!"hello world" === 0 // false
Обновление
Я видел ваш комментарий к другому сообщению, в котором говорилось, что a
- это 0
, пока что-то не произойдет, тогда это 1
.
В этом случае:
var a = 0; // integer 0 or bool false
if(!a==1){ // if the bool opposite of 0 (false) is equal to 1 (true)
// well, opposite of false is true, so you're checking if true is equal to true
// so this will get called
e.preventDefault();
}