除了创建一个函数之外,还有一种更短的方法来检查一个值是undefined
,null
还是false
只在JavaScript中?
以下if语句相当于if(val===null && val===undefined val===false)
代码工作正常,我正在寻找更短的等价物。
if(val==null || val===false){
;
}
val==null
或val=undefined
时,val=null
以上评估为真。
我在考虑使用按位运算符或其他一些技巧。
答案 0 :(得分:32)
嗯,你总是可以“放弃”:)
function b(val){
return (val==null || val===false);
}
答案 1 :(得分:12)
我认为最好的方法是:
if(val != true){
//do something
}
如果val为false,NaN或未定义,则为true。
答案 2 :(得分:3)
我认为您正在寻找的是 !!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 ""
}
答案 3 :(得分:2)
一种方法就是这样:
var acceptable = {"undefined": 1, "boolean": 1, "object": 1};
if(!val && acceptable[typeof val]){
// ...
}
我认为,鉴于您的限制快速检查,它可以最大限度地减少操作次数。
答案 4 :(得分:1)
我所知道的只有
这样的东西的快捷方式var val;
(val==null || val===false) ? false: true;
答案 5 :(得分:1)
另一种解决方案:
基于该文档,如果值不是0,未定义,null等,则Boolean对象将返回true https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
如果省略value或者为0,-0,null,false,NaN,undefined或空字符串(“”),则对象的初始值为false。
所以
if(Boolean(val)) { //executable... }
答案 6 :(得分:0)
布尔值(val)=== false。这对我有用,可以检查价值是否错误。
答案 7 :(得分:0)
使用?更干净。
var ? function_if_exists() : function_if_doesnt_exist();
答案 8 :(得分:0)
尝试如下
var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
//your instruction
}