В логических операциях js значения 0, "", null, false, undefine и NaN будут расцениваться как ложные, а все остальное будет оцениваться как истинные.
||Сначала вычислите первый операнд. Если его можно преобразовать в значение true, верните значение выражения слева. В противном случае вычислите второй операнд. Даже если операнд оператора || не является логическим значением, его все равно можно рассматривать как логическую операцию ИЛИ, поскольку независимо от типа возвращаемого значения его можно преобразовать в логическое значение.
Воспользуйтесь его функцией возврата нелогических значений: используйте || для нелогических операндов, чтобы выбрать первое определенное и ненулевое значение в наборе альтернативных значений (первое значение не является ложным)
пример:
вар макс = максимальная_ширина || obj.max_width ||
var attr = attr ""; Эта операция часто используется для определения того, определена ли переменная. Если она не определена, присвойте ей начальное значение. Это более полезно при определении значения по умолчанию для параметра функции.
&&, сначала оценивается первое выражение, и если оно ложно, второе выражение не будет обрабатываться, в противном случае последующие выражения будут продолжать обрабатываться; Выбирает значение первого неверного выражения слева направо и возвращает значение последнего выражения, если оно не найдено.
Пример: (нужно тщательно учитывать вкус)
2 && 's1' && '123' && 'sss' Значение выражения равно 'sss'
2 && 's1' && '' && 'sss' Значение выражения равно ''
2 && 's1' && NaN && 'sss' Значение выражения равно NaN
если(а >=5){
Оповещение("Привет");
}
Можно упростить до:
a >= 5 && alert("Привет");
Разница между typeof 5 и typeof !!5 заключается в более строгом способе записи. Функция !! заключается в преобразовании переменной другого типа в тип bool. Например, if(!!attr) => if(attr)
Возможности || и && в js не только помогают нам оптимизировать код, но и снижают его читаемость. Это требует, чтобы мы взвесили это сами.
Умная реализация функции startWith в JS, alert(!'asdf'.indexOf('s')) => !0 = true