Ответ 1
Ну, вы всегда можете "сдаться":)
function b(val){
return (val==null || val===false);
}
Помимо создания функции, существует ли более короткий способ проверить, есть ли значение undefined
, null
или false
только в JavaScript?
Нижеприведенный оператор if эквивалентен if(val===null && val===undefined val===false)
Код работает отлично, я ищу более короткий эквивалент.
if(val==null || val===false){
;
}
Выше val==null
оценивается как true, когда val=undefined
или val=null
.
Я думал, может быть, с помощью побитовых операторов или какой-то другой обман.
Ну, вы всегда можете "сдаться":)
function b(val){
return (val==null || val===false);
}
Лучший способ сделать это я считаю:
if(val != true){
//do something
}
Это будет true, если val является ложным, NaN или undefined.
Я думаю, что вы ищете !!val==false
, который можно повернуть на !val
(еще короче):
Вы видите:
function checkValue(value) {
console.log(!!value);
}
checkValue(); // false
checkValue(null); // false
checkValue(undefined); // false
checkValue(false); // false
checkValue(""); // false
checkValue(true); // true
checkValue({}); // true
checkValue("any string"); // true
Это работает, перевернув значение с помощью оператора !
.
Если вы перевернули null
один раз, например, так:
console.log(!null) // that would output --> true
Если вы дважды переверните его так:
console.log(!!null) // that would output --> false
То же самое с undefined
или false
.
Ваш код:
if(val==null || val===false){
;
}
затем станет:
if(!val) {
;
}
Это будет работать для всех случаев, даже если есть строка, но длина равна нулю.
Теперь, если вы хотите, чтобы он также работал на число 0 (которое стало бы false
, если оно было двойным щелчком), тогда ваш if станет:
if(!val && val !== 0) {
// code runs only when val == null, undefined, false, or empty string ""
}
Один из способов сделать это:
var acceptable = {"undefined": 1, "boolean": 1, "object": 1};
if(!val && acceptable[typeof val]){
// ...
}
Я думаю, что это минимизирует количество операций, учитывая, что ваши ограничения быстро проверяют.
Другое решение:
На основе документа объект Boolean вернет true, если значение не равно 0, undefined, null и т.д. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
Если значение опущено или равно 0, -0, null, false, NaN, undefined или пустая строка (""), объект имеет начальное значение false.
Итак,
if(Boolean(val)) { //executable... }
только ярлык для чего-то подобного, о котором я знаю,
var val;
(val==null || val===false) ? false: true;
Boolean (val) === false. Это помогло мне проверить, ложно ли значение.
Использование? намного чище.
var ? function_if_exists() : function_if_doesnt_exist();
Попробуйте как ниже
var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
//your instruction
}
См. node-boolify