能否请您指出在 JavaScript 中跳过可选参数的好方法。
例如,我想扔掉opt_
这里的所有参数:
goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {'Cache-Control': 'no-cache'}, opt_timeoutInterval)
能否请您指出在 JavaScript 中跳过可选参数的好方法。
例如,我想扔掉opt_
这里的所有参数:
goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {'Cache-Control': 'no-cache'}, opt_timeoutInterval)
解决方案:
goog.net.XhrIo.send(url, undefined, undefined, undefined, {'Cache-Control': 'no-cache'})
您应该使用undefined
代替要跳过的可选参数,因为这 100% 模拟了 JavaScript 中可选参数的默认值。
小例子:
myfunc(param);
//is equivalent to
myfunc(param, undefined, undefined, undefined);
强烈建议:如果参数很多,就使用JSON,参数列表中间可以有可选参数。看看这是如何在jQuery 中完成的。
最安全的选择是undefined
,并且应该几乎无处不在。但是,最终,您不能欺骗被调用的函数,以为您确实省略了参数。
如果您发现自己null
仅仅因为它更短而倾向于使用,请考虑声明一个名为 的变量,_
作为 的一个很好的简写undefined
:
(function() { // First line of every script file
"use strict";
var _ = undefined; // For shorthand
// ...
aFunction(a, _, c);
// ...
})(); // Last line of every script
首先要知道:
typeof undefined
评估为 "undefined"
typeof null
评估为 "object"
所以假设一个函数接受一个它期望类型为 的参数"number"
。如果你提供null
一个值,你会给它一个"object"
. 语义关闭。1
随着开发人员继续编写越来越健壮的 javascript 代码,您调用的函数显式检查参数值的可能性越来越大,undefined
而不是经典的if (aParam) {...}
. 如果您继续null
交替使用和undefined
仅仅因为它们都碰巧强制使用false
.
但请注意,实际上函数可以判断参数是否被实际省略(相对于设置为undefined
):
f(undefined); // Second param omitted
function f(a, b) {
// Both a and b will evaluate to undefined when used in an expression
console.log(a); // undefined
console.log(b); // undefined
// But...
console.log("0" in arguments); // true
console.log("1" in arguments); // false
}
脚注
undefined
也不是 type "number"
,但它的全部工作是成为一个不是真正类型的类型。这就是为什么它是未初始化变量假定的值,以及函数的默认返回值。只是null
作为参数值传递。
补充:您还可以跳过最后一个要传递实际值的后续可选参数(在这种情况下,您可以完全跳过opt_timeoutInterval
参数)