这是一个说明我问题的小插曲:http://plnkr.co/edit/322WB4jyCJberABbb0P0
我正在针对其他问题进行测试,但遇到了一些意外行为。
var A = function() {}
A.prototype = {
constructor: A,
x: 10
};
var a = new A();
document.writeln("a.x is " + a.x + "<br>");
document.writeln("a.constructor === A is " + a.constructor === A + "<br>");
var result = a.constructor === A;
document.writeln("a.constructor === A is " + result + "<br>");
第二个writeln不将字符串与值连接在一起,而是写入“ false”。第三个writeln连接并按预期进行写入。
我实际上不是在测试之外要做的事情,但是我想了解为什么第二个writeln会以这种方式表现。
最佳答案
这是因为===
的优先级低于+
-否则您将无法编写像a + b === c + d
这样的简单方程式!
因此,只需在(a.constructor === A)
周围使用括号,一切都会很好。
关于javascript - document.writeln未正确串联===比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22210727/