Будет ли (переменная или {}) работать кроссбраузерно в Javascript?

StackOverflow https://stackoverflow.com/questions/1879607

Вопрос

В if(variable) предложение в следующих конструкциях проверяет, не является ли list / array значением null / undefined, чтобы избежать исключения:

if (list)
    for (var k in list) {
       ...

if (array)
    for (var i = array.length; i >= 0; i--) {
        ...

Но синтаксис JS допускает такие выражения, как

null || []
undefined || {}

Таким образом, я могу сделать код короче на одну строку и по-прежнему проверять массив / объект:

for (var k in obj || {}) {
    ...

for (var i = (array || {}).length; i >= 0; i--) {
    ...

Вопрос, по сути, заключается в следующем:делает null/undefined || []/{} выражение возвращает последнее во всех браузерах?

Редактировать: обнаружил, что фигурные скобки лучше подходят для for (var k in list || {}) итерация, потому что массив (квадратные скобки) вызывает итерацию и генерируется исключение.

Это было полезно?

Решение

ДА, null, undefined, 0, "", все решат , чтобы false, когда рассматривается как логическое значение (которое || оператор делает), и, таким образом, все браузеры будут использовать последнее.Такое поведение совершенно безопасно.

Другие советы

ДА

Я ненавижу ограничение в 15 символов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top