我不是一个JavaScript大师(还)。我试图找出一种方法来减少下面的行数...是否有任何快捷方式可以说if语句?
function showDialog(divID)
{
var dialogDiv = $("#" + divID);
var height = 500;
var width = 400;
var resizable = false;
if (dialogDiv.attr("height") != "")
{
height = parseInt(dialogDiv.attr("minHeight"));
}
if (dialogDiv.attr("width") != "")
{
width = parseInt(dialogDiv.attr("minWidth"));
}
if (dialogDiv.attr("resizable") != "")
{
resizable = dialogDiv.attr("resizable");
}
dialogDiv.dialog
(
{
resizable: resizable,
width: width,
height: height,
bgiframe: true,
modal: true,
autoOpen: false,
show: 'blind'
}
)
dialogDiv.dialog("open");
}
答案 0 :(得分:8)
您可以将其缩短一点,如下所示:
function showDialog(divID)
{
var dialogDiv = $("#" + divID);
dialogDiv.dialog({
resizable: dialogDiv.attr('resizable'),
width: dialogDiv.attr('width') || 400,
height: dialogDiv.attr('height') || 500,
bgiframe: true,
modal: true,
autoOpen: false,
show: 'blind'
});
dialogDiv.dialog("open");
}
这利用了javascript弱类型的事实,实际上它有点滥用它,但它有效。
我仍然觉得这很可读,但是我习惯了语法,如果你不是......决定什么是可读的,哪些是简洁的,哪个对你更重要,在很多情况下肯定会有权衡。< / p>
答案 1 :(得分:2)
您可以使用:
var x = first || default;
进行初始化。它基本上检查first
值是否真实,如果是,则将其分配给x,否则将default
分配给x
。您的代码中的一个示例:
height = dialogDiv.attr('height') || 500;
替换
if (dialogDiv.attr("height") != "")
{
height = parseInt(dialogDiv.attr("height"));
}
答案 2 :(得分:2)
var height = dialogDiv.attr("height") || 500;
var width = dialogDiv.attr("width") || 400;
var resizable = dialogDiv.attr("resizable") || false;
答案 3 :(得分:1)
由于每个if块只有一个语句,你可以取消它周围的括号,但这主要是美学。
答案 4 :(得分:0)
您是不是想要使用三元运算符?
建议:脚本是为人而不是机器编写的。让代码易于阅读和理解比预先优化然后忘记你在那里写的内容更重要。
无论哪种方式都是缩短if语句的一种方法:
height = dialogDiv.attr("height") != "" ? parseInt(dialogDiv.attr("height")) : height;
width = dialogDiv.attr("width") != "" ? parseInt(dialogDiv.attr("width")) : width;
resizable = dialogDiv.attr("resizable") != "" ? parseInt(dialogDiv.attr("resizable")) : resizable;
答案 5 :(得分:0)
不要那样做。您希望尽可能保持JavaScript代码的可读性和可维护性。如果您尝试快速下载并快速启动JavaScript,那么您应该做的是创建JavaScript代码的minified副本...而不是破坏原始JavaScript代码。在缩小和优化方面,Google Closure Compiler是工作的最佳工具。要详细了解Google Closure Tools (and Compiler Service)和Google Closure Library,请参阅链接。