2013-08-28 3 views
0

Допустим, у вас есть следующие функции:Как определить оператор неопределенной переменной?

var variable; 

function(variable); 

function function(variable) { 
    alert ("variable equals " + variable); 
    if (variable != 'undefined') { 
     ~~~code1~~~ 
    } else { 
     ~~~code2~~~ 
    } 
} 

В бдительные выходы:

переменная равна неопределенными

Однако ~~~ ~~~ code2 никогда не выполняется. Я предполагаю, что мой синтаксис неверен. Если я не определил переменную, как мне получить функцию функции для выполнения ~~~ code2 ~~~?

Экстренная Информация

Когда переменная переменная жёстко, как показано в следующем коде:

var variable; 

function(variable) 

function function(variable) { 
    variable = 2; 
    alert ("variable equals " + variable); 
    if (exponent == 2) { 
     ~~~code1~~~ 
    } else { 
     ~~~code2~~~ 
    } 
} 

~~~ ~~~ code1 выполняется.

+1

Попробуйте выполнить '! ==' или 'typeof! ==' См. Http://stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-javascript – aug

+2

Вы предупреждаете переменную, называемую «variable», но ваш тест if находится в переменной, называемой «exponent». То, как вы описываете проблему, звучит для меня так, как будто вы думаете, что у вас есть только одна переменная. Для кода, который вы показали, нет никакого смысла, что присвоение значения от 2 до _variable_ повлияет на тест if на _exponent._ Кроме того, проясните, что вы подразумеваете под «неопределенной переменной», поскольку это может означать «переменная, которая существует, но который содержит значение _undefined_ ", или это может означать« переменная, которая вообще не существует ». – nnnnnn

+0

Хм, похоже, это дубликат. Я предполагаю, что мой поисковый запрос немного отстал, но спасибо всем, кто ответил. –

ответ

3
> exponent != 'undefined' 

Вам необходимо понять Abstract Equality Comparison Algorithm. Вышеупомянутые попытки сравнить значение exponent со строкой «undefined». Поскольку exponent определен, но ему не присвоено значение, оно возвращает значение undefined, которое не равно строке «undefined» (в соответствии с вышеприведенным алгоритмом).

Таким образом, вы можете сравнить его значение к значению по неопределенным:

exponent != undefined 

или вы можете сравнить тип значения с соответствующим значением строки с помощью оператора typeof (так как она всегда возвращает строку) :

if (typeof exponent != 'undefined') 

ли вы использовать жесткие или абстрактные версии выше (!== или != соответственно) не имеет никакого значения в данном случае.

+0

Ahh, похоже, что я получил синтаксис неправильно. Огромное спасибо! –