Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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中等于false_Javascript - Fatal编程技术网

为什么是';布尔值的真实例';在JavaScript中等于false

为什么是';布尔值的真实例';在JavaScript中等于false,javascript,Javascript,下面指出表达式“true instanceof Boolean”的计算结果为false。为什么这个表达式的计算结果为false $(文档).ready(函数(){ var$result=$(“#result”); if(布尔值的真实例){ $result.append('I'm a Boolean!'); }否则{ $result.append('我不是布尔型!'); } }); 值true是一个布尔基元,即带有小写“b”的“布尔”。它不是一个物体 类似地,“hello”也不是String的实

下面指出表达式“true instanceof Boolean”的计算结果为false。为什么这个表达式的计算结果为false

$(文档).ready(函数(){
var$result=$(“#result”);
if(布尔值的真实例){
$result.append('I'm a Boolean!');
}否则{
$result.append('我不是布尔型!');
}
});

true
是一个布尔基元,即带有小写“b”的“布尔”。它不是一个物体

类似地,
“hello”
也不是String的实例,因为String原语也不是对象

您可以使用
typeof
操作符测试基本类型

在JavaScript中,原语值和对象值之间的区别可能有点混淆,因为当原语像对象引用一样使用时,语言会隐式地将原语包装在适当的对象包装器中。这就是你能写作的原因

var length = "hello world".length;
该字符串被隐式转换为字符串实例,以使该
操作正常工作。您甚至可以使用布尔值:

var trueString = true.toString();
数字也会出现这种情况,尽管有时语法会造成阻碍:

var failure = 2.toString(); // an error
var success = (2).toString(); // works

所以布尔值和包装器对象不是一回事


也。换句话说,使用布尔对象不是一种好的风格。

表达式可能需要的是
typeof true==“Boolean”
感谢Pointy,instanceOf似乎只适用于对象而不是基本类型!回答得好,回答得好!但是有一点让人困惑,可能会给不太熟悉的人贴上一个代码示例的结尾:if(typeof true==“boolean”)…@shashankyes有:try
true.toString()
你缺少新的。尝试布尔值的新布尔值(真)实例
,您将得到真值。@Pointy这不是真正的对象包装器。这只是对另一种基本类型的更改,对象包装器类似于object(true)。@DavidMichaelCabinessJr。啊,我错了,注释被删除。@如果我错了,请纠正我,但我相信这是因为当您使用点运算符时,JS隐式地将基元类型转换为它们的对象形式。