2013-12-19 42 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

相关问题