我有一个存储false或true的变量,但我需要分别为0或1。我该怎么做呢?


当前回答

我对所有建议的答案创建了一个JSperf比较。

TL;DR -当前所有浏览器的最佳选择是:

val | 0;

.

更新:

似乎这些天它们都是完全相同的,除了Number()函数是最慢的,而最好的val === true ?1: 0;。

其他回答

我更喜欢用数字函数。它接受一个对象并将其转换为一个数字。

例子:

var myFalseBool = false;
var myTrueBool = true;

var myFalseInt = Number(myFalseBool);
console.log(myFalseInt === 0);

var myTrueInt = Number(myTrueBool);
console.log(myTrueInt === 1);

你可以在jsFiddle中测试它。

一元的+运算符会处理这些:

var test = true;
// +test === 1
test = false;
// +test === 0

您自然希望在存储它之前在服务器上检查它,因此在服务器上执行此操作可能是一个更明智的地方。

try

val*1

让t = true; 让f = false; console.log (t * 1); console.log (f * 1)

输入的方法是:

Number(true) // 1
Number(false) // 0

依我看,最好的解决办法是:

fooBar | 0

这在asm.js中用于强制整型。