我有一个这样的函数:
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;
}
..
} 我怎样才能把代码写得更短?我的意思是使用扩展还是其他?
发布于 2011-11-01 18:58:07
var deviceTableGridId = tableGridId || gridId,
getUrl = url || restUrl;发布于 2011-11-01 18:56:13
initGrid: function(tableGridId, url) {
tableGrid = tableGrid || gridId;
url || (url = restUrl);
...
} 默认参数值的模式如下所示
x = x || someValue;
和
x || (x = someValue);
请注意这两个检查,检查真值,以便它们将覆盖false、""、0等。
如果你想要更安全的东西,试试吧
x === undefined && (x = someValue);
发布于 2011-11-01 19:06:26
当falsy值可以从可接受的输入中排除时,其他两种解决方案都很好。如果不能,那么一个简单的helper函数将会清理掉;
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;
}尽管希望您会喜欢第一种解决方案。
https://stackoverflow.com/questions/7965386
复制相似问题