是否需要使用参数?

时间:2012-06-08 08:14:27

标签: javascript parameters

例如:

    function test(x) {
       alert("This is a " + x);
    }

    test("test");

老实说,我没有看到它的重点(这可能是因为我对这个主题知之甚少),但如果你能解释一下,那就太棒了!

4 个答案:

答案 0 :(得分:2)

  

JavaScript中有四种调用模式:方法   调用模式,函数调用模式,构造函数调用模式和apply   调用模式。这些模式在初始化奖励参数的方式上有所不同。   调用运算符是一对括号,它跟随任何产生函数值的表达式。该   括号可以包含零个或多个表达式,以逗号分隔。每个表达式产生一个   论证价值。每个参数值都将分配给函数的参数名称。 没有   参数个数和参数个数不匹配时的运行时错误。如果有的话   许多参数值,额外的参数值将被忽略。如果参数值太少,那么   未定义的值将替换缺少的值。对参数没有类型检查   值:任何类型的值都可以传递给任何参数。

“JavaScript:Douglas Crockford撰写的好文章。版权所有2008 Yahoo! Inc., 978-0-596-51774-8“。

答案 1 :(得分:2)

Javascript不支持函数重载,但每次调用函数时,arguments变量都会设置一个包含所有传递参数的数组,即使它们未在函数声明中命名。例如:

function prod() {
    var res = 1;
    for (var i = 0; i < arguments.length; i++)
        res *= arguments[i];
    return res;
}
var p = prod(5, 3, 7);    // => 105

注意:arguments实际上不是Array对象,即它不具有相同的prototype。但它很容易转换为数组:

var args = Array.prototype.slice.call(arguments, 0);

答案 2 :(得分:2)

参数允许替换:我们不是一遍又一遍地编写相同的代码,而是使用我们自己的值重新使用它。在你的示例中,该方法没有做太多,所以没什么优势。

但只需稍微调整一下,就可能更有意义了:

function test(x) {
    var y = x * 2
    if (y === NaN) {
        alert("That was no number!");
    } else {
        alert("Multiplied by 2, " + x + " is " + y);
    }
}

我们不希望每次想要运行该代码时都写出来,代替我们的值:

var y = "test" * 2
if (y === NaN) {
    alert("That was no number!");
} else {
    alert("Multiplied by 2, test is " + y);
}

var y = 5 * 2
if (y === NaN) {
    alert("That was no number!");
} else {
    alert("Multiplied by 5, test is " + y);
}

注意:值可能来自表单,数据库,Web服务等。 在我们的例子中,它是硬编码的,但在现实生活中,这种可能性较小。

相反,我们创建了test方法,这是一种处理我们关心的案例的通用代码。

然后我们可以写:

test("test");
test(5);

如果我们需要做什么更改,我们更改单个test方法,而不是找到代码中我们使用相同逻辑的所有位置。这使程序维护和测试更容易。

答案 3 :(得分:0)

这将在没有参数检查的情况下工作

Demo

注意:如果你在函数中使用该参数,那么最好在函数调用中传递它,否则它仍然是“未定义的”......

最终结论

function test(a) 
{     
  alert(a); 
}  

test(1); // outputs 1 
test(); // outputs undefined 

当你没有传递参数的值时,它设置为undefined。你不会得到例外。它可以是一种方便的方法,使您的功能在某些情况下更通用。未定义的计算结果为false,因此您可以检查是否在

中传递了值