Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.12.2011, 00:04
Интересующийся
Отправить личное сообщение для wwwboy Посмотреть профиль Найти все сообщения от wwwboy
 
Регистрация: 12.10.2010
Сообщений: 22

Почему происходит проверка до вызова самой функции?
Пишу функцию

function isUndefined(obj) {
  return typeof(obj) === "undefined" || obj == null;
});

var b = isUndefined(Obj1);


при несуществующем объекте Obj1 - пишет ошибку до вызова самой функции - "Obj1 не определено"

Как можно вылечить?
Ответить с цитированием
  #2 (permalink)  
Старый 09.12.2011, 00:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вы пытаетесь передать несуществующую переменную, конечно выползит ошибка:

function isUndefined(obj) {  
  return typeof(obj) === "undefined" || obj == null;  
};  

var Obj1;
alert( isUndefined(Obj1) );
Ответить с цитированием
  #3 (permalink)  
Старый 09.12.2011, 01:07
Интересующийся
Отправить личное сообщение для wwwboy Посмотреть профиль Найти все сообщения от wwwboy
 
Регистрация: 12.10.2010
Сообщений: 22

Но в prototype.js все работает же!

function isUndefined(object) {
  return typeof object === "undefined";
}

extend(Object, {
  ...
  isUndefined: isUndefined
});

var b = Object.isUndefined(Obj1) //b => true
Ответить с цитированием
  #4 (permalink)  
Старый 09.12.2011, 01:50
Интересующийся
Отправить личное сообщение для wwwboy Посмотреть профиль Найти все сообщения от wwwboy
 
Регистрация: 12.10.2010
Сообщений: 22

как осуществить проверку на undefined в функции а не инлайном typeof Obj === 'undefined' ?
Ответить с цитированием
  #5 (permalink)  
Старый 09.12.2011, 02:50
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от wwwboy Посмотреть сообщение
как осуществить проверку на undefined в функции а не инлайном typeof Obj === 'undefined' ?
Понимаете, в Вашем случае переменная Obj1 непонятно откуда берётся. То ли она глобальная, то ли локальная... это зависит от области видимости. Не стоит для этого создавать отдельную функцию, т.к. ошибка возникнет на этапе вызова функции при передаче несуществующей переменной. Проще так:
if (window.Obj1) alert('true'); else alert('false');
данная проверка проверит Obj1 сразу на всё (undefined, null, false) и не выдаст исключения
Ответить с цитированием
  #6 (permalink)  
Старый 09.12.2011, 03:37
Интересующийся
Отправить личное сообщение для wwwboy Посмотреть профиль Найти все сообщения от wwwboy
 
Регистрация: 12.10.2010
Сообщений: 22

Сообщение от Маэстро Посмотреть сообщение
Понимаете, в Вашем случае переменная Obj1 непонятно откуда берётся. То ли она глобальная, то ли локальная... это зависит от области видимости. Не стоит для этого создавать отдельную функцию, т.к. ошибка возникнет на этапе вызова функции при передаче несуществующей переменной. Проще так:
if (window.Obj1) alert('true'); else alert('false');
данная проверка проверит Obj1 сразу на всё (undefined, null, false) и не выдаст исключения
Спасибо за разъяснение!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать URL для вызова функции klingan Общие вопросы Javascript 13 25.04.2013 20:55
Вставка элемента в место вызова функции belkir Элементы интерфейса 21 05.08.2011 08:59
Почему так происходит. demoniqus Общие вопросы Javascript 1 27.03.2011 16:28
Строка вызова функции DMH Общие вопросы Javascript 11 10.08.2010 09:06
Проверка существования входного параметра для функции Axe Я не знаю javascript 2 25.05.2009 14:58