【发布时间】:2012-10-22 15:12:15
【问题描述】:
假设你有一个非常基本的 person 对象,它有两个值和一个函数:
function personObject() {
this.name = 'First Name';
this.placeInLine = 1;
this.setPlaceInLine = function(place) {
this.placeInLine = place;
}
}
我们设置了一些这样的变量:
var john = new personObject();
var bill = new personObject();
var message = "";
现在看下面三个代码sn-ps...
---代码#1---
if(john.placeInLine < bill.placeInLine) message = "John is before Bill";
else message = "John is not before Bill";
RESULT: message = "John 不在 Bill 之前"; // 因为1不小于1
---代码#2---
bill.setPlaceInLine(2); // change Bill's place to 2 (instead of default of 1)
if(john.placeInLine < bill.placeInLine) message = "John is before Bill";
else message = "John is not before Bill";
RESULT: message = "John 在 Bill 之前"; // 因为 1 小于 2;
---代码#3---
if(john.placeInLine < bill.setPlaceInLine(2)) message = "John is before Bill";
else message = "John is not before Bill";
RESULT: message = "John is not before Bill": // 为什么?
比较后是否调用了 .setPlaceInLine 函数?还是运行该函数的行为会返回一些东西,然后与 john.placeInLine 进行比较?
【问题讨论】:
-
在 sn-ps 中修复了这个问题 - 很抱歉造成混乱
标签: javascript conditional-statements operator-precedence