2016-02-05 2 views
0

В чем разница между этим утверждениемРазница между двумя утверждениями, декларирующих объект

var X = X || {}; 

И этого. Они делают то же самое? Есть разница в производительности?

var X = typeof X === "undefined" ? {} : X; 
+0

Не думайте, что есть разница в производительности. но первый короткий. – Tushar

+1

Один diff состоит в том, что первый проверяет, является ли 'X' правдой, если это не значит, что' X' является пустым объектом. Пока второй проверяет только 'undefined'. – Tushar

+0

Vasile, отвечает ли один из ответов на ваш вопрос? – Cerbrus

ответ

2

Это не то же самое.

|| возвращает объект, когда X является любого возможно falsy значения.
typeof проверка будет только возвращение {} если есть X есть undefined.

Согласно this test, проверка undefined почти в два раза быстрее. Вероятно, это потому, что не требуется никакого литья.

+0

Просто прокомментировал это :) – Tushar

+1

И теперь я даже добавил jsperf к нему :-) – Cerbrus

1

В этом случае: var X = X || {} переменная X будет пересмотрена, если она была объявлена, но falsy. Таким образом, var X = 0; X = X || {}; будет перезаписывать объект 0.

Смежные вопросы