2012-03-23 9 views
2

В javascript какая разница между undefined == variable и variable == undefined оба они такие же? и насколько это будет, если я сделаю undefined === variable или typeof variable == 'undefined'?Оператор равенства JavaScript

Может кто-то помочь мне

+0

Все одинаковы. Если вы хотите проверить, не была ли указана переменная, используйте «variable === undefined». Если вы хотите проверить, содержит ли переменная данные, используйте «if (variable)». Это то же самое, что «if (variable! == undefined && variable! == null)». Вы всегда должны использовать === вместо ==. С помощью == вы неявно выполняете преобразование типа, например. 1 == "1" = true, 1 === "1" = false. –

ответ

1

Не используйте undefined для проверки неопределенной переменной, используйте вместо этого оператор typeof!

undefined не является ключевым словом javascript, это просто имя переменной. Если кто-то пишет var undefined = true глобально в любом месте кода, все ваши сравнения будут действовать неожиданно.

Вам следует рассмотреть возможность использования чего-то типа JSLINT или JSHINT, чтобы избежать подобных ошибок в вашем javascript-коде.

Кроме того, я всегда буду писать сравниваемый параметр во-первых, так как я его читаю. Вот почему If the variable foo is undefined than должен быть записан как if (typeof foo === "undefined")

Я не помню названия для этой модели, но я совершенно уверен, что есть один :)

1

Там нет никакой разницы в смысле, когда речь идет о другом порядке частей упомянутых вами.

=== строгого сравнения, == нет. Например, undefined == false - это правда, но undefined === false нет. Проверка неопределенного типа аналогична строгому сравнению в этом случае.

0

undefined == variable и variable == undefined - это то же самое.

, но я рекомендую undefined == variable, чтобы предотвратить странное поведение, если вы пропустите = (variable = undefined).

undefined === variable и typeof variable == 'undefined' также должны быть одинаковыми.

+5

Я не согласен с вашей рекомендацией. Порядок в порядке, но в некоторых случаях можно переопределить исходное значение 'undefined' (хотя в новой ES5 эта переменная доступна только для чтения). – Tadeck

+1

Да. Существует рекомендация писать код таким образом, но 'undefined' может быть переписан в js, поэтому в этом случае он не работает. И переписывание 'undefined' приведет к еще более странному поведению. Я предпочитаю вариант с 'typeof'. – kirilloid

+0

Ох этого не знал. благодаря :) – Shylux

Смежные вопросы