这是一个说明我问题的小插曲: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/

10-09 23:40