document.writeln没有连接===正确比较

时间:2014-03-05 22:25:50

标签: javascript html document.write

这是一个演示我的问题的插件: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会这样做。

1 个答案:

答案 0 :(得分:3)

那是因为===的优先级低于+ - 否则您将无法编写像a + b === c + d这样的简单方程式!

所以只需在(a.constructor === A)周围使用括号,一切都会好的。