以下表示表达式“true instanceof Boolean”的计算结果为false。为什么这个表达式会被评估为假?
$(document).ready(function() {
var $result = $('#result');
if(true instanceof Boolean) {
$result.append('I\'m a Boolean!');
} else {
$result.append('I\'m something other than a Boolean!');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
答案 0 :(得分:12)
值true
是一个布尔基元 - &#39; s&#34; boolean&#34;用小写&#34; b&#34;。它不是一个对象。
类似地,"hello"
不是String的实例,因为字符串原语也不是对象。
您可以使用typeof
运算符测试基元类型。
原始值和对象值之间的区别在JavaScript中可能有点混乱,因为当基元像对象引用一样使用时,语言会隐式地将基元包装在适当的对象包装器中。这就是你可以写
的原因var length = "hello world".length;
该字符串被隐式转换为String实例,以使该.
操作起作用。你甚至可以用布尔值来做到这一点:
var trueString = true.toString();
它也会出现在数字中,尽管语法有时会妨碍:
var failure = 2.toString(); // an error
var success = (2).toString(); // works
答案 1 :(得分:-2)
The Boolean object is an object wrapper for a boolean value.
所以布尔值和包装器对象不是一回事。
此外,boolean objects are verboten。换句话说,使用布尔对象并不是一种好的风格。