簡體   English   中英

為什么Math.random在我的代碼上不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM