我正在用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想要为蓝色提供任何值
答案 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
。