Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   undefined vs 'undefined' (https://javascript.ru/forum/misc/40261-undefined-vs-%27undefined%27.html)

Shitbox2 29.07.2013 23:39

undefined vs 'undefined'
 
Раньше всегда проверял на неопределенность так: x === 'undefined'
Сейчас обнаружил, что существует два вида undefined. Допустим, i элемент массива не определен. Тогда
typeof arr[i] === undefined, typeof arr[i] === 'undefined', arr[i] === undefined, arr[i] === 'undefined'

Выдаст: false, true, true, false. И в консоли слово undefined будет в одном случае строкой, а в другом спец. понятием серого цвета.

Что за дела?

cyber 29.07.2013 23:54

Shitbox2,
и что не так?
typeof возвращает строку?
в остальных случаях используется константа.

я обычно делаю так, для проверки на undefined

var undef; // для лучше сжатия.

var arr = [1,2 ,0];

if(arr[2] == undef)

bes 30.07.2013 00:21

http://es5.javascript.ru/x11.html#x11.4.3

Shitbox2 30.07.2013 01:41

А что быстрее работает typeof или проверка конкретного значения на неопределенность?

danik.js 30.07.2013 02:02

Цитата:

Сообщение от Shitbox2
А что быстрее работает typeof или проверка конкретного значения на неопределенность?

накидай тест на jsperf.com, сделай полезное дело ) Но сначала поищи готовый. Может кто уже тестил.
Я думаю что строки сравниваются дольше конечно же.

Shitbox2 30.07.2013 08:16

Хорошая идея! Совсем забыл про этот сайт

typeof x === 'undefined' — 100%
typeof x === typeof void(0) — 100%
typeof x === typeof void 0 — 90%
typeof x === typeof undefined — 90%
x === undefined — 90%
angular.isUndefined(x) — 50%

danik.js 30.07.2013 09:30

А ссылку?

Shitbox2 30.07.2013 17:41

Эм... Так это на основании нескольких уже существующих тестов


Часовой пояс GMT +3, время: 11:45.