/ / Има ли нещо нередно с използването на 'var undefined' за тестване на undefined - javascript

Има ли нещо нередно с използването на 'var undefined' за тестване на undefined - javascript

Има ли нещо нередно в този тест за неопределен?

var undefined;

if(x == undefined){
//do something
}

или това:

function undefined(x){
return typeof x == "undefined";
}

if(undefined(x)){
//do something
}

jsLint не хвърля погрешна дума, но кодът все още работи

Отговори:

7 за отговор № 1

Други програмисти очакват undefined да бъде винаги undefined, а не функция заради функцията.

Хората често използват typeof оператор, за да се гарантира, че не се хвърля грешка при позоваване, когато се използва за тестване на променливи, които са undefined.

Ако някой някога направи това за вас, можете да използвате ...

undefined = void 0;

... за да го върнете обратно.


5 за отговор № 2

Като undefined не е Ключова дума на Javascriptняма нищо лошо в това.

Въпреки това, вие пренебрегвате основна променлива, кояточесто се използва за проверка на недефинираните променливи във втория ви пример като функция. Аз изпитвам и забранявам този човек като изпълнител, ако видя, че в някой кодекс, който преглеждах.


1 за отговор № 3

undefined е само свойство по подразбиране на глобалния обект, което можете да замените / предефинирате. Затова винаги трябва да тествате undefined използвайки typeof x == "undefined", тъй като typeof операторът не може да бъде предефиниран.

var undefined;

if(x == undefined){
//do something
}

Това, което се случва тук, е, че определяте нова променлива "Неопределен", която не присвоявате на стойност и която по този начин получава стойността undefined. x не е дефиниран и също има стойност undefined, Следователно и двамата са равни. Това обаче е доста безсмислено.


1 за отговор № 4

undefined не е запазена дума в JavaScript (ECMA-262). Това е константа с име Undefined;

С деклариране:

var undefined;

декларирате променлива със същото име в локалния обхват.

Така че технически можете да направите това, просто не дефинирайте нещо подобно:

var undefined = 13;