如何在javascript函数中对参数进行排序

时间:2013-08-08 07:06:03

标签: javascript

我正在用javascript编写代码。

colorMixer = function (redIntensity, blueIntensity, greenIntensity)

{
   // mix color
}

colorMixer(10, 8, 7) // means red = 10, blue = 8, green = 7

colorMixer(10, 8) // means red = 10, blue = 8

问题:如何指定red = 10, green = 8,而blue没有值(我不打算将蓝色值设为0)我想要蓝色值未知的场景,并且DONT想要为蓝色提供任何值

3 个答案:

答案 0 :(得分:4)

不改变调用方法或函数定义,可以使用undefined。

colorMixer(10, undefined, 8);

然后,测试每个参数以查看函数中是否undefined以查看它是否已通过。您也可以使用null作为未传递参数的指示符,但我更喜欢undefined,因为这样您就可以放弃您不打算传递的尾随参数,它们将自动为{{ 1}}。

但是,如果这是常规出现,您可以更改参数,以便它们在对象中传递,然后函数可以准确检查传递的内容。这是更具可扩展性的,因为无论有多少可能的参数,它都同样有效:

undefined

然后,在colorMixer函数本身中,您可以查看传递对象的属性,并且可以确切地看到传递的内容和未传递的内容。

答案 1 :(得分:2)

colorMixer(color) {
    var r = r in color ? color.r : DEFAULT_R,
        g = g in color ? color.g : DEFAULT_G,
        b = b in color ? color.b : DEFAULT_B;
}

colorMixer({r: 255, g: 127, b: 0});
colorMixer({g: 127, b: 0});
colorMixer({r: 255});

实际编辑我在编辑错误之前写的内容。如果对通道使用0,则默认值将被用作0,计算结果为false。

答案 2 :(得分:0)

您可以将null传递给该功能。

colorMixer(10, null, 8);

在函数内部,您可以检查是否传递了null。

colorMixer = function (redIntensity, blueIntensity, greenIntensity) {
    if (blueIntensity === null) { ... }
}

请注意,=====之间的区别非常重要。

如果未传递参数,

x == null也将为真,例如colorMixer(1, 2)

x === null要求值为null