Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ES6中0被认为是正确的吗?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 在ES6中0被认为是正确的吗?

Javascript 在ES6中0被认为是正确的吗?,javascript,ecmascript-6,Javascript,Ecmascript 6,在ES6中0被认为是正确的吗?还是所有字符串都被认为是真的 这是真的: var value = "0"; var isTrue = value ? true : false; // true 我以为===是为了严格平等 如果它已经改变了,有没有一种方法可以为了兼容性而采用旧方法 更新: 谢谢。我收到的值将始终是字符串,因此我将检查0和false: var booleanValue = value && value!=="0" && value!=="false"

在ES6中0被认为是正确的吗?还是所有字符串都被认为是真的

这是真的:

var value = "0";
var isTrue = value ? true : false; // true
我以为===是为了严格平等

如果它已经改变了,有没有一种方法可以为了兼容性而采用旧方法

更新:

谢谢。我收到的值将始终是字符串,因此我将检查0和false:

var booleanValue = value && value!=="0" && value!=="false" ? true : false;

0是真的,因为它只是一个字符串并且有一个值,但是0作为一个数字被认为是假的

所有包含字符的字符串都是真的。只有空字符串是假的。ª

0这个数字是错误的。0不是

我以为===是为了严格平等

是的。没有===签入代码。条件运算符?:不对条件操作数执行===检查。它执行布尔检查,就像if一样

如果使用==,则会得到false:

当然,在这种情况下,条件运算符没有意义:

var isTrue = value === true; // false
我收到的值将始终是字符串,因此我将检查0和false:

var booleanValue = value && value!=="0" && value!=="false" ? true : false;
这取决于你想做什么以及你可能得到什么样的价值。例如,如果您得到的是一个包含有效数字或有效布尔值的字符串(如您的示例所示),则可以使用JSON.parse将其解析为数字或布尔值:

var isTrue = !!JSON.parse(str);
这个!!使0和NaN转换为false,而非0或NaN的数字转换为true。但同样,这取决于您接收到的内容,带有您期望值的开关可能会更好,等等

1法尔西和特鲁西:

falsy-当用作布尔值时强制为false,例如在问题中的条件运算符中。falsy值为0、NaN、null、未定义,当然还有false

truthy-用作布尔值时强制为true。所有非虚假值都是真实值,包括0和false


这是javascript中所有falsy值的列表:

错误的 0 或 无效的 未定义 楠 只有字符串是falsy值,这意味着它是空字符串。
“0”是一个包含内容的字符串,因此它不是一个伪值,但0是一个。

isTrue=value-使用赋值而不是比较的典型错误。

您正在检查一个包含0而不是实际数字0的字符串

如果一个字符串等于,则认为该字符串为false,所有其他字符串都认为为true

如果数字为0或NaN,则认为该数字为假,所有其他数字都认为为真

==实际上意味着严格相等,意味着对类型和值进行比较。因此:

true == 1  // true
true === 1 // false

实际上它的另一种方式是,对于任何字符串,它将返回True,对于0作为整数,它将返回False,对于1作为整数,它将返回True

var值0=0; var值1=1; var-str=23123; var isTrue0=值0?真:假; var isTrue1=value1?真:假; var isTrueStr=str?真:假; console.log“0:”+isTrue0; console.log'1:'+isTrue1;
log'string:'+isTrueStr;这里0是字符串,它不是整数。规则枚举的是假字符串,其余的是真字符串。@justDan在我的情况下,我将始终接收字符串。我没有使用严格相等,所以我使用的是松散相等。我的错误是0作为字符串不被认为是错误的。@1.21gigawatts-并且您不是第一个这样做的人。:-最常让人感动的是虚假的真实。
"0"  // string
0 // number
true == 1  // true
true === 1 // false