有没有办法将Javascript truthy评估为返回true / false结果的表达式?具体来说,不必编写if语句就可以了。我有以下代码,我正在谈论但仍需要if / else子句:
(myVariable)?true:false
当我想要的是myVariable的真值时,这段代码似乎是多余的。提供的任何代码都应该能够在浏览器控制台中运行并返回正确的true / false值。
答案 0 :(得分:1)
当你将!
应用于JavaScript对象时,它会将其设置为“not”布尔值,因此当我们应用两个!!
时,只需创建一个“not not”布尔值。因此,我们可以简单地执行!!myVariable
Logical NOT(!)!expr如果它的单个操作数可以转换为true,则返回false;否则,返回true。参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators
请注意,您的三元运算符也位于参考链接页面上。
例如:
var myVariable = "fred"; // truthy variable
console.log(!!myVariable); // logs true
console.log(typeof !!myVariable); // logs boolean
为清楚起见:
var myVariable = true;
var myNew = !myVariable; // false
var myNewNew = !!myVariable; // true again
答案 1 :(得分:1)
如果您认为某个魔术技巧可以将变量转换为严格的true / false布尔值而不使用隐式if
,那么您自欺欺人。
这3行:
return (myVariable) ? true : false
return !!myVariable
if (myVariable) { return true } else {return false}
内部所有都做同样的事情。
我可以看到很多用例将变量转换为严格的true或false布尔值。但是,如果没有(可能隐含的)if
,你为什么要这样做呢?您是否认为存在一些性能问题?
答案 2 :(得分:0)
!!myVariable
可以解决问题:
!!{truthy value} -> !false -> true