では、2 つの値と 1 つの関数を持つ非常に基本的な人物オブジェクトがあるとします。
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 = "";
以下の 3 つのコード スニペットを見てください...
---コード #1---
if(john.placeInLine < bill.placeInLine) message = "John is before Bill";
else message = "John is not before Bill";
結果: 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";
結果: 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 と比較される何かが返されますか?