Будет ли (переменная или {}) работать кроссбраузерно в Javascript?
-
18-09-2019 - |
Вопрос
В 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 символов.