javascript - 在 javascript 中是否使用过原始变量?

标签 javascript variables boolean-logic primitive

一个非常简单的问题,是否存在在 javascript 中使用原始数据类型更可取的情况,我特别被原始 bool 值所困扰,考虑以下代码

var bool = new Boolean(false);
if (bool){
    alert(bool);
}

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

那么使用原始数据类型,尤其是原始 bool 值有什么意义吗?

最佳答案

这些不是原语。基元如 100"foobar"false:

> typeof false
"boolean"
> typeof new Boolean(false)
"object"

new Boolean(或 NumberString)是一个对象并遵循对象的规则,而不是原语的比较、 bool 转换等规则. 这些对象对于 JS 程序员来说确实几乎没有用(与在内部使用它们的 JS 引擎相反)。

请注意,虽然很少需要使用 Boolean 和 friend 来构造对象(如 x = new Boolean(...)),但这些函数有时很有用本身。例如,以下漂亮的惯用语从数组中删除所有虚假值:

ary = ary.filter(Boolean)

关于javascript - 在 javascript 中是否使用过原始变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19979649/

相关文章:

java - 使用Java绘制维恩图

javascript - 从变量javascript创建变量

ruby - 区分局部变量和全局变量有什么好处?

ruby - ruby中 "not"和 "!"的区别

java - 如果不为 true 则重新分配 boolean 值

c# - Unity (C#) 中的继承变量问题(更改继承变量)

javascript - ES6 Javascript以多个名称导入相同的js文件

javascript - 如何在 html 5 Canvas 上旋转单个对象?

javascript - 如何设计一个支持javascript插件的C++插件框架

javascript - 使用 Underscore _.debounce() 触发单个事件