30.04.2014, 00:07
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
почему пишут так?
часть копаясь в чужом коде вижу
typeof variable == "undefined"
почему не так ?
variable === undefined
просто разный стиль кода, или я чего то не понимаю?
П.с просто вижу такую проверку наверное в 90% случаев...
Последний раз редактировалось cyber, 30.04.2014 в 00:12.
|
|
30.04.2014, 00:22
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
alert(variable === undefined)
alert(typeof variable == "undefined")
__________________
29375, 35
|
|
30.04.2014, 09:11
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
Сообщение от Aetae
|
alert(variable === undefined)
|
На локальных лучше сразу выловить исключение и обнаружить свои косяки, чем в случае с typeof рисковать насрать в глобал.
А глобальные, если они не прописаны в коде явно, никто так в здравом уме не проверяет.
Остальное - вопросы стиля и предпочтений, имхо.
__________________
Гейзенберг, возможно, читал этот тред.
|
|
30.04.2014, 09:28
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
На локальных лучше сразу выловить исключение и обнаружить свои косяки, чем в случае с typeof рисковать насрать в глобал.
|
Юзай 'use strict' - там попытка создать переменную без указания ключевого слова приведёт к ошибке
Цитата:
|
А глобальные, если они не прописаны в коде явно, никто так в здравом уме не проверяет.
|
Я проверяю иногда Бывают случаи, когда нужно понять в каком окружении запущен скрипт: браузер, поток браузера, нода, аддон к фотошопу и т.д.
Цитата:
|
Остальное - вопросы стиля и предпочтений, имхо.
|
Согласен, я вообще делаю так:
isUndef(value)
|
|
30.04.2014, 09:36
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
30.04.2014, 10:27
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Сообщение от Gozar
|
https://developer.mozilla.org/en-US/...ects/undefined
|
Кстати интересный момент про пример оттуда:
Сообщение от MDN
|
var x;
if (x === undefined) {
// these statements execute
}
else {
// these statements do not execute
}
|
Если вдруг кто не знает: var x; не изменит значение x на undefined , если переменная x ранее определена.
Делая так в глобале, можно выстрелить себе в ногу, если не различать глобальные переменные и свойства/методы инстанса Window.
var FormData;
if (!FormData) {
//все нормально, реализуем свой FormData
}
var postMessage;
if (!postMessage) {
//в Chrome и IE мы только что убили глобальную ссылку на postMessage,
//причем даже window.postMessage работать не будет
}
Последний раз редактировалось Octane, 30.04.2014 в 10:34.
|
|
30.04.2014, 10:39
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
Сообщение от kobezzza
|
Юзай 'use strict'
|
Это хорошая практика, но не все ее соблюдают. Даже я не всегда.)
Да вообще, бывает, вытаскиваешь из скрипта со стирктом сниппет и вставляешь туда, где стрикт не включен, или наоборот. Поэтому хочется ожидать, что поведение будет strict-независимым.
Сообщение от kobezzza
|
Я проверяю иногда Бывают случаи, когда нужно понять в каком окружении запущен скрипт
|
Не понял, ты пишешь window === undefined, что ли? Не верю.
Сообщение от kobezzza
|
isUndef(value)
|
А я так проверяю:
value === void 0
Потому что, на мой взгляд, это промах в дизайне языка, что у undefined нет своего литерала. Поэтому лично я undefined стараюсь избегать везде, где только можно.
__________________
Гейзенберг, возможно, читал этот тред.
|
|
30.04.2014, 10:47
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
Не понял, ты пишешь window === undefined, что ли? Не верю.
|
Не
Могу написать:
typeof window === 'undefined'
typeof importScripts === 'undefined'
И т.д., но такое приходится делать редко
ЗЫ:
Цитата:
|
alert(variable === undefined)
|
Цитата:
|
А глобальные, если они не прописаны в коде явно, никто так в здравом уме не проверяет.
|
Перечитав понял, что изначально тебя не понял
Последний раз редактировалось kobezzza, 30.04.2014 в 11:04.
|
|
30.04.2014, 11:09
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
kobezzza,
Напиши, плиз, все проверки окружения, которые ты используешь. Ну, то есть, поделись опытом.
__________________
Гейзенберг, возможно, читал этот тред.
Последний раз редактировалось Дзен-трансгуманист, 30.04.2014 в 11:16.
|
|
30.04.2014, 11:26
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от Дзен-трансгуманист
|
kobezzza,
Напиши, плиз, все проверки окружения, которые ты используешь.
|
Ну собственно самые главные я уже написал Можно также проверить работоспособность eval, т.к. некоторые окружения (например аддон к браузеру) могут блокировать это.
var evalSupport = false;
try {
evalSupport = eval('true');
} catch (ignore) {}
При написании плагинов к разному софту проверки уже очень специфичны.
|
|
|
|