我有这样的功能:
initGrid: function(tableGridId, url) {
var deviceTableGridId;
if (typeof tableGridId != "undefined"){
deviceTableGridId = tableGridId;
} else {
deviceTableGridId = gridId;
}
var getUrl;
if (typeof url != "undefined"){
getUrl = url;
} else {
getUrl = restUrl;
}
..
}
如何缩短代码?我的意思是延伸等等?
答案 0 :(得分:3)
var deviceTableGridId = tableGridId || gridId,
getUrl = url || restUrl;
答案 1 :(得分:1)
initGrid: function(tableGridId, url) {
tableGrid = tableGrid || gridId;
url || (url = restUrl);
...
}
默认参数值的模式是这样的
x = x || someValue;
和
x || (x = someValue);
请注意这两项检查,检查真值,以便它们覆盖false
,""
,0
等。
如果您想要更安全的东西,请尝试
x === undefined && (x = someValue);
答案 2 :(得分:0)
当可以从可接受的输入中排除falsy
值时,其他两种解决方案都很棒。但是,如果它不可能,那么一个简单的辅助函数将清理它们;
function getOrDefault(val, other) {
if (typeof val == "undefined") {
return other;
}
return val;
}
var someVal = getOrDefault(someVar, 4);
var getUrl = getOrDefault(url, restUrl);
另一种方法是;
var someVal = someVar;
if (typeof someVal == "undefined") {
someVal = 4;
}
var getUrl = url;
if (typeof getUrl == "undefined") {
someVal = restUrl;
}
虽然希望你会赞成第一个解决方案。