![](/img/trans.png)
[英]I only need the 0 value in this case from an array of [0, undefined, null, false]
[英]JavaScript check if value is only undefined, null or false
除了创建一个函数之外,还有一种更短的方法来检查一个值是否undefined
,仅在JavaScript中为null
或false
?
下面的if语句等价于if(val===null && val===undefined val===false)
代码工作正常,我正在寻找更短的等价物。
if(val==null || val===false){
;
}
当val=undefined
或val=null
时, val==null
以上的计算结果为true。
我在考虑使用按位运算符或其他一些技巧。
好吧,你总是可以“放弃”:)
function b(val){
return (val==null || val===false);
}
我认为最好的方法是:
if(val != true){
//do something
}
如果val为false,NaN或未定义,则为true。
我认为你要找的是!!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]){
// ...
}
我认为它可以最大限度地减少操作次数,因为您可以快速进行检查。
另一种方案:
根据该文档,如果值不是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... }
我所知道的只是这样的捷径
var val;
(val==null || val===false) ? false: true;
布尔值(val)=== false。 这对我有用,可以检查价值是否错误。
用? 更清洁。
var ? function_if_exists() : function_if_doesnt_exist();
试试如下
var Boolify = require('node-boolify').Boolify;
if (!Boolify(val)) {
//your instruction
}
请参阅node-boolify
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.