2013-12-19 67 views
0

是否需要在javascript函數中定義參數?我的問題是關於我的comchoice功能下面,我簡單地使用開放和關閉括號,而不給任何可以改變的參數。是否需要在Javascript函數中定義參數?

我把我的劇本完整的代碼僅作參考

var userChoice = prompt("Do you choose rock, paper or scissors?"); 
var computerChoice = Math.random(); 
var compchoice = function() 
{ 
    if (computerChoice <= 0.34) 
    { 
     return computerChoice = "Rock"; 
    } 
    else if(0.35 <= computerChoice <= 0.67) 
    { 
     return computerChoice = "Paper"; 
    } 
    if (0.68 <= computerChoice <= 1) 
    { 
     return computerChoice = "Scissors"; 
    } 
}; 

compchoice(); 

var compare = function (choice1, choice2) 
{ 
    if (choice1 === choice2) 
    { 
     return alert("The result is a tie!"); 
    } 

    if (choice1 === "Rock") 
    { 
     if (choice2 === "Scissors") 
     { 
      return alert("Rock wins!"); 
     } 
     else if (choice2 === "Paper") 
     { 
      return alert("Paper wins!"); 
     } 
    } 
    else if (choice1 === "Scissors") 
    { 
     if (choice2 === "Rock") 
     { 
      return alert("Rock wins!"); 
     } 
     else if (choice2 === "Paper") 
     { 
      return alert("Schissors wins!"); 
     } 
    } 
}; 

compare(userChoice, computerChoice); 
+1

不,它不是必需的。 –

+0

當然不是。有些函數只是不期望任何參數,所以要求每個函數都有參數是很愚蠢的。另外,你爲什麼問?你的代碼不能按預期工作嗎?瞭解更多關於定義函數的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function。 –

+0

這取決於你如何定義你的功能。如果你需要在你的函數定義中使用傳遞的參數(就像你在'compare'函數中做的那樣),你可能需要定義這些參數,但這不是javascript爲每個函數明確需要的參數。 – tewathia

回答

1

你可以做的是類似如下:

function RandomFunction(){ 
    alert(arguments[0]); 
    console.log(arguments[1]); 
} 

RandomFunction('Hello World', 'Good bye'); 

,並找到該函數的自變量的函數內的「論據」變量。因此,不需要宣佈論點,但宣佈它們總是一條好路。

而且,而是採用傳統的論據,你可以在一個對象傳遞給作爲對象的擴展列表:

function AnotherFunction(x){ 
    alert(x.message); 
} 

AnotherFunction({message: 'Hello Again, world'}); 
+1

值得注意的是,雖然正確,但'strict'參數在嚴格模式下是不允許的。它也比明確定義參數昂貴得多,所以應該在阻止代碼時避免它。 – devnill

1

不,這是沒有必要的傳遞參數,函數可以不帶參數。在你的情況下,函數使用閉包訪問外部變量。

0

作爲每函數定義語法

FunctionExpression:
函數標識符選擇(FormalParameterList 選擇){函數體} (ES5 §13)

在函數表達式可以ommit標識符以及參數。

因此,您的代碼在語法上是有效的。

+1

你能否擴大你的答案?這看起來更像是一條評論。 –

+0

我確定會在稍後當我從手機回來時這樣做 – C5H8NNaO4

相關問題