Javascript确保三元表达式中值"true"的最佳方法是什么

Fra*_*eno 2 javascript jslint

我使用jslint来检查我的javascript,我得到了一个我无法找到的JSLint错误.
表达式是:

var foo = (bar === true ? true : false);
Run Code Online (Sandbox Code Playgroud)

错误是:

Expected '!!' and instead saw '?'.
Run Code Online (Sandbox Code Playgroud)

表达式的目的是我希望var的值为布尔值true而不是1或"not null"或任何其他"truthy"值.只有值true才会导致赋值为true

表达这一点的最佳方式是什么?

Tam*_*dus 6

jslint建议如下,因为x?true:false它等价于!!x:

var foo = !!(bar === true);
Run Code Online (Sandbox Code Playgroud)

但是你可以更简化它,因为===总是返回一个布尔值:

var foo = bar === true;
Run Code Online (Sandbox Code Playgroud)