2012-10-02 54 views
3

我正在學習JavaScript和感到困惑通過函數傳遞參數豆蔻,我希望有人能給出一個清楚的解釋澄清傳遞PARAMS在Javascript

我有以下簡單的代碼

 //generate random number 
    var number = Math.round(Math.random()*10 + 1); 

    //Ask user for name 
    var playerName = prompt("What is your name?"); 

    //Prompt for intro 
    var weclome = alert("Hello " + playerName + " Welcome to Guess the Number"); 
    console.log(number); 

    var playerGuess = prompt("What is your guess "); 

    if (playerGuess !== null) guess(playerGuess); 

    function guess(pGuess){ 
    if(pGuess == number) { 
    alert("Congratulations you have guessed correctly"); 
    } else { 
    alert("Unlucky, please try again"); 
    } 
} 

正如你可以看到它的最簡單的猜數字遊戲。從我理解到目前爲止,我已經分配了變量playerGuess作爲來自提示輸入的結果,我通過猜測函數。我不明白的是,我已經在猜測函數中調用了param pGuess。我的理解是,這不應該起作用,但它確實如此,pGuess如何知道從playerGuess中獲得它的價值。

上午我在完全錯誤的方式在看這個,我真的想了解這個

感謝

+0

值謝謝所有誰回答,大的幫助,對不起,我不能接受所有的答案 – Richlewis

回答

1

你是什麼這條線做(注意function關鍵字):

function guess(pGuess){ 

是定義的代碼(「功能」),它帶有一個參數一個可重複使用的塊。當該參數到達時,它是在由名稱pGuess訪問。下面的代碼塊,它持續不變如匹配}

你這一行做什麼(注意,我們沒有function關鍵字更多):

guess(playerGuess); 

調用該功能使用playerGuess變量的當前值。所以,你傳遞一個值到它並將其放置在先前定義pGuess變量

+1

所以如果我寫了猜測(pGuess);那麼沒有價值傳遞,因爲它沒有定義? – Richlewis

+0

真的有幫助的解釋,謝謝 – Richlewis

+0

正確。這裏的關鍵概念是變量的「範圍」,即代碼的可用部分。這是一個關鍵字,您可以搜索以查找更多信息:) – Gareth

4

如何pGuess知道從playerGuess

得到其數值

它沒有。 playerGuess的值爲,該函數由函數調用,而不是由函數取自變量。

guess(playerGuess)意味着「呼叫猜測功能。傳遞的playerGuess值作爲第一個參數。

function guess(pGuess){的意思是」這是猜測功能。第一個參數的值賦給當它被稱爲」本地pGuess變量。

+0

可能是一個愚蠢的問題,但如何給函數playerGuess的價值呼叫?謝謝你的回答 – Richlewis

+0

正如我所說:'猜(playerGuess)' – Quentin

+0

得到了它,謝謝,所以我真的只是在猜測函數的範圍內重新命名參數? – Richlewis

0

這是正確的。當你調用guess(playerGuess),你在功能設置pGuess

1
  • prompt("What is your guess ");值賦給變量playerGuess
  • 方法guess是函數調用的範圍功能調用值爲playerGuess
  • pGuess只是guess方法用於參數的內部標識符 - 只是另一個變量。在這種情況下,包含playerGuess
+0

可能是一個愚蠢的問題,但playerGuess的值如何賦予函數調用?謝謝您的回答 – Richlewis