在javascript中有原始变量吗?

Mat*_*ler 3 javascript variables primitive boolean-logic

一个非常简单的问题,是否有一种情况,在javascript中使用原始数据类型是优选的,我特别困扰原始布尔值,请考虑以下代码

var bool = new Boolean(false);
if (bool){
    alert(bool);
}
Run Code Online (Sandbox Code Playgroud)

它会,alert但你会得到false,这有点令人困惑(false!= falsy).

那么使用原始数据类型尤其是原始布尔值是否有意义?

geo*_*org 8

这些不是原始的.元是像100,"foobar",false:

> typeof false
"boolean"
> typeof new Boolean(false)
"object"
Run Code Online (Sandbox Code Playgroud)

new Boolean(或NumberString)是一个对象,并遵循对象,而不是原语规则作比较,布尔转换等.这些对象确实是一个JS程序员难以有用(相对于使用它们内部一个JS引擎).

请注意,尽管很少需要使用Boolean和朋友来构造对象(如x = new Boolean(...)),但这些函数本身有时很有用.例如,以下好习惯用法从数组中删除所有有价值的值:

ary = ary.filter(Boolean)
Run Code Online (Sandbox Code Playgroud)