[英]Why Math.random doesn't work at my code?
這是我的電梯程序。 但是隨機數學是行不通的。
var person = {
name: "Gorg",
position: 2,
goal: 9
};
var lift = {
position: function() {
var x = Math.floor((Math.random() * 10) + 1);
}
};
console.log("Ok, buddy! You are at " + person.position + " floor");
console.log("Lift is at " + lift.position + " floor");
if (lift.position != person.position) {
console.log("Please wait a minute, lift's coming");
}
else {
console.log("Lift is here. Please enter!");
}
if (lift.position > person.position) {
for (i = person.position; i <= lift.position; i++) {
console.log(i);
}
}
else if (lift.position < person.position) {
for (i = person.position; i >= lift.position; --i) {
console.log(i);
}
}
else {
console.log("You're already at this level");
}
if (lift.position !== person.position) {
if (person.goal > person.position) {
for (i = person.position; i <= person.goal; i++) {
console.log(i);
}
}
else if (person.goal < person.position) {
for (i = person.position; i >= person.goal; --i) {
console.log(i);
}
}
else {
console.log("You're already at this level");
}
}
console.log("Congratulation! You achieve your goal!");
兩個問題
首先,更改您的lift.position
函數,使其返回值(而不是將其分配給不可訪問的局部變量)。
position: function() {
return Math.floor((Math.random() * 10) + 1);
}
其次,請確保您調用了lift.position()
函數(使用括號來調用函數)...
lift.position()
var person = { name: "Gorg", position: 2, goal: 9 }; var lift = { position : function() { var x = Math.floor((Math.random() * 10) + 1); return x; } }; console.log("Ok, buddy! You are at " + person.position + " floor"); console.log("Lift is at " + lift.position() + " floor"); if (lift.position != person.position) { console.log("Please wait a minute, lift's coming"); } else { console.log("Lift is here. Please enter!"); } if (lift.position > person.position) { for (i = person.position; i <= lift.position; i++) { console.log(i); } } else if (lift.position < person.position ) { for (i = person.position; i >= lift.position; --i) { console.log(i); } } else { console.log("You're already at this level"); } if (lift.position !== person.position) { if (person.goal > person.position) { for (i = person.position; i <= person.goal; i++) { console.log(i); } } else if (person.goal < person.position ) { for (i = person.position; i >= person.goal; --i) { console.log(i); } } else { console.log("You're already at this level"); } } console.log("Congratulation! You achieve your goal!");
據我了解,這是解決方案
//returned x here;
var lift = {
position : function() {
var x = Math.floor((Math.random() * 10) + 1);
return x;
}
//將對lift.position的調用更正為lift.position()
console.log("Lift is at " + lift.position() + " floor");
您已為人員對象的位置屬性分配了一個功能。 要調用該方法,您需要調用函數,即lift.position()而不是lift.position。 如果將屬性的名稱從“ position”更改為“ getPosition”,那就更好了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.