Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 对象使用相等运算符为'true'和'false'返回'false'_Javascript - Fatal编程技术网

Javascript 对象使用相等运算符为'true'和'false'返回'false'

Javascript 对象使用相等运算符为'true'和'false'返回'false',javascript,Javascript,为什么对象在使用相等运算符的情况下返回true和false,但在未使用运算符的情况下返回true var test = { one: "1", two: "2" }; if (test) console.log("if"); // true if (test == true) console.log("true"); // false if (test == false) console.log("false"); // false if(test)返回true,因为如果定义

为什么对象在使用相等运算符的情况下返回
true
false
,但在未使用运算符的情况下返回
true

var test = {
    one: "1",
    two: "2"
};

if (test) console.log("if"); // true
if (test == true) console.log("true"); // false
if (test == false) console.log("false"); // false

if(test)
返回true,因为如果定义/存在
test
对象,此条件将返回true。如果
test
undefined
NAN
null
false
它将返回false

其余的比较都是不言自明的

if (test == true) 
将返回false,因为
test
不是可与
true
进行比较的布尔值。你可以试试这个比较

if (test["one"] == "1") 
  console.log("true")

if(test)
返回true,因为如果定义/存在
test
对象,此条件将返回true。如果
test
undefined
NAN
null
false
它将返回false

其余的比较都是不言自明的

if (test == true) 
将返回false,因为
test
不是可与
true
进行比较的布尔值。你可以试试这个比较

if (test["one"] == "1") 
  console.log("true")

返回true,因为它正在检查对象是否存在/定义

if (test == true) console.log("true"); // false
if (test == false) console.log("false"); // false
返回false,因为测试不是布尔值,所以无法与true或false进行比较。所以它总是

返回true,因为它正在检查对象是否存在/定义

if (test == true) console.log("true"); // false
if (test == false) console.log("false"); // false

返回false,因为测试不是布尔值,所以无法与true或false进行比较。因此,当使用
=
时,它总是false

,有类型转换规则

  • 如果其中一个操作数是布尔操作数,则转换布尔操作数 如果为真,则为1,如果为假,则为0
  • 如果将对象与数字或字符串进行比较,JavaScript将尝试 返回对象的默认值。运营商试图 将对象转换为基本值、字符串或数字值, 使用对象的valueOf和toString方法。如果这 转换对象的尝试失败,将生成运行时错误
因此
true
false
被转换为
1
0


test.toString()
返回字符串
“[对象对象]”
,该字符串不等于
0
1
,使用
==
时,存在类型转换规则

  • 如果其中一个操作数是布尔操作数,则转换布尔操作数 如果为真,则为1,如果为假,则为0
  • 如果将对象与数字或字符串进行比较,JavaScript将尝试 返回对象的默认值。运营商试图 将对象转换为基本值、字符串或数字值, 使用对象的valueOf和toString方法。如果这 转换对象的尝试失败,将生成运行时错误
因此
true
false
被转换为
1
0

test.toString()
返回字符串
“[object object]”
,该字符串不等于
0
1

console.log({}==“[object object]”)true
现在有意义了:)
console.log({}==“[object]”);//真的
现在说得通了:)