没有If语句的Truthy表达

时间:2018-01-18 20:22:41

标签: javascript

有没有办法将Javascript truthy评估为返回true / false结果的表达式?具体来说,不必编写if语句就可以了。我有以下代码,我正在谈论但仍需要if / else子句:

(myVariable)?true:false

当我想要的是myVariable的真值时,这段代码似乎是多余的。提供的任何代码都应该能够在浏览器控制台中运行并返回正确的true / false值。

3 个答案:

答案 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