Что означает это выражение JS? Что мы возвращаемся?Что означает это выражение JS?
return dihy(year) in {353:1, 383:1};
Что означает это выражение JS? Что мы возвращаемся?Что означает это выражение JS?
return dihy(year) in {353:1, 383:1};
Это return
утверждение, что вызывает функцию, содержащую вернуть логическое значение.
dihy()
со значением переменной year
в качестве аргумента.353
или 383
(имена объектов, которые существуют , в объект буквальный). Неважно, какое значение имеет свойство; он просто должен существовать внутри объекта. (То есть 1
- это просто произвольное значение.)true
, в противном случае false
.JavaScript программисты иногда используют этот подход, поскольку он короче, чем проверка в отношении каждого значения по отдельности, и это легко программно добавить новые значения для проверки против:
var foo = {353: 1, 383: 1};
function bar(year) {
return year in foo;
}
alert(bar(1955)); // false
foo[1955] = 1;
alert(bar(1955)); // true
Вы можете посмотреть на MDC documentation for the in
operator.
Это будет true
, если вызов функции dihy
с аргументом year
является ключевым в объекте {353:1, 383:1}
и false
иначе.
Это может быть переписано, как это, например:
var result = dihy(year);
return result == 353 || result == 383;
Это выражение:
dihy(year) in {353:1, 383:1}
позвонить в dihy(year)
функция предположительно возвращает числовое значение. Если это значение равно 353
или 383
, выражение будет оцениваться до true
, в противном случае - false
.
Обратите внимание, что ваш код не является выражением, а утверждение, то return
заявление:
return expression;
Итак, return
заявление будет либо вернуть true
или false
.
Возвращает true или false, в зависимости от результата dihy()
возвращает 353 или 383 (true для этих двух, что-то еще ложное).
А это значит, что именно ... является результатом этой функции, содержащейся в этой коллекции данных ...
Там нет оснований использовать объект здесь, т.е. {353: 1, 383: 1}
. Фактически значения 1 смешиваются и могут заставить непосвященных думать, что значение 1 возвращается, когда оно не является и является чисто произвольным.
Следующая эквивалентно:
dihy(year) in [353, 383]
Это не будет работать. Объект массива имеет два ключа: «0», который имеет значение 355 и «1», которое имеет значение 383. Это означает, что ваше выражение оценивается как true, только если результат вызова функции dihy() равен 0 или 1, а не 353 и 383. –
@Moshe Нет, неправда. –