簡體   English   中英

JavaScript函數返回“未定義”

[英]JavaScript function returning “undefined”

我編寫了一個簡單的代碼,使用“ random_word();”從四個隨機名稱中選擇一個。 功能,它不起作用。 它說:“未定義”。 誰能解釋我的原因並幫助解決它? 感謝所有幫助。

var randomWord;

var word = new Array(3);
word[0] = "Michael";
word[1] = "Simon";
word[2] = "Peter";
word[3] = "Mark";

function random_word(){
var randomWord = word[Math.floor(Math.random()*word.length)]
}

random_word();

document.write(randomWord);

您可以使用var語句使randomWord成為函數的私有變量。 如果沒有,則可以將全局變量用於結果。

 function random_word() { randomWord = word[Math.floor(Math.random() * word.length)]; } var randomWord; word = ["Michael", "Simon", "Peter", "Mark"]; random_word(); document.write(randomWord); 

更好的樣式和更簡潔的將是所選項目的返回。 如果您也將數組用作參數,則是一個更好的版本,因為您也可以將函數用於其他數組。

 function getRandomItem(array) { return array[Math.floor(Math.random() * array.length)]; } var words = ["Michael", "Simon", "Peter", "Mark"]; document.write(getRandomItem(words)); 

獎勵,添加帶有間隔的隨機名稱。

 function getRandomItem(array) { return array[Math.floor(Math.random() * array.length)]; } var words = ["Michael", "Simon", "Peter", "Mark"]; setInterval(function () { document.getElementById('names').innerHTML += getRandomItem(words) + '<br>'; }, 2000); 
 <div id="names"></div> 

random_word函數上下文中的局部變量randomWord與在外部上下文中聲明的randomWord無關。 如果要重置外部上下文randomWord變量的值,則應在函數中刪除var關鍵字。

function random_word(){
    randomWord = word[Math.floor(Math.random()*word.length)]
}

但這不是編程的好方法。 理想情況下,該函數應返回一個值。

function random_word(){
  return word[Math.floor(Math.random()*word.length)];
}

var randomWord = random_word();
var anotherRandomWord = random_word();

您在函數中使用var關鍵字,該關鍵字創建了一個局部變量。 當您退出該功能時,將不會設置全局功能。

使用此代替:

function random_word(){  
    randomWord = word[Math.floor(Math.random()*word.length)]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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