Эффект на практике одинаков, поэтому, я думаю, вы могли бы сказать, что они взаимозаменяемы.
В логическом контексте (например, условном) выражение выражается как true или false.
В Actionscript 3.0 следующие значения оцениваются как ложные:
- false
- null
- 0
- NaN
- "" (пустая строка)
- undefined
- void
Все остальное оценивается как true.
Ссылка наПользовательский экземпляр класса может быть либо нулевым, либо не нулевым.
Итак, в этом случае:
if ( object == null )
Очевидно, что условие выполняется только в том случае, если объект нулевой.
В этом другом случае:
if ( !object )
Выражение object
оценивается как ложное, если object
равно null
.Если это null
, выражение ложно.Поскольку это, в свою очередь, отрицается, конечное значение будет истинным, и поэтому условие будет выполнено.Итак, как и в первом случае, если object
равно нулю, условие выполнено.И, как и в первом случае, опять же, если object
не равно нулю, условие не выполняется.
Нет другого варианта, если ваша переменная введена в определенный пользователем класс;такая переменная может содержать только допустимую ссылку или ноль;т. е. он не может содержать любое значение, оцениваемое на false в логическом контексте, кроме null;Итак, опять же, это либо ноль, либо не нуль .Вот почему оба примера кода имеют одинаковый эффект.