Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 减少代码行数_Javascript_Jquery - Fatal编程技术网

Javascript 减少代码行数

Javascript 减少代码行数,javascript,jquery,Javascript,Jquery,我还不是JavaScript大师。我正试图找出一种方法来减少下面的行数…有没有什么捷径让我们假设if语句 function showDialog(divID) { var dialogDiv = $("#" + divID); var height = 500; var width = 400; var resizable = false; if (dialogDiv.attr("height") != "") { heig

我还不是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");
}
您可以使用:

var x = first || default;
进行初始化。它基本上检查第一个值是否为truthy,如果为truthy,则将其指定给x,否则将默认值指定给x。代码中的一个示例:

height = dialogDiv.attr('height') || 500;
取代

if (dialogDiv.attr("height") != "") 
{
    height = parseInt(dialogDiv.attr("height"));
}
您可以使用:

var x = first || default;
进行初始化。它基本上检查第一个值是否为truthy,如果为truthy,则将其指定给x,否则将默认值指定给x。代码中的一个示例:

height = dialogDiv.attr('height') || 500;
取代

if (dialogDiv.attr("height") != "") 
{
    height = parseInt(dialogDiv.attr("height"));
}

因为每个if块中只有一条语句,所以可以去掉它周围的括号,但这主要是美观的。

因为每个if块中只有一条语句,所以可以去掉它周围的括号,但这主要是美观的。

您的意思是要使用三元运算符吗

建议:脚本是为人编写的,而不是为机器编写的。更重要的是,代码要易于阅读和理解,而不是预先优化,然后忘记在那里写的东西

无论哪种方法,都有一种缩短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;

你是说你想用三元运算符吗

建议:脚本是为人编写的,而不是为机器编写的。更重要的是,代码要易于阅读和理解,而不是预先优化,然后忘记在那里写的东西

无论哪种方法,都有一种缩短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;

您可以将其缩短一点,如下所示:

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是弱类型的这一事实,实际上它有点滥用它,但它是有效的


我仍然觉得这很可读,但我习惯了语法,如果你不…决定什么是可读的,什么是简洁的,哪个对你来说更重要,在很多情况下肯定会有一个折衷。

你可以把它缩短一点,如下所示:

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");
}
var height = dialogDiv.attr("height") || 500;
var width = dialogDiv.attr("width") || 400;
var resizable = dialogDiv.attr("resizable") || false;
这充分利用了javascript是弱类型的这一事实,实际上它有点滥用它,但它是有效的


我仍然觉得这很可读,但我习惯了语法,如果你不…决定什么是可读的,什么是简洁的,哪个对你更重要,在很多情况下肯定会有一个折衷。

不要这样做。您希望尽可能保持JavaScript代码的可读性和可维护性。如果您试图加快下载时间并加快JavaScript速度,那么您应该做的是创建JavaScript代码的副本。。。不破坏您的原始JavaScript代码。当涉及到小型化和优化时,是完成这项工作的最佳工具。要了解更多有关和的信息,请参阅链接。

不要这样做。您希望尽可能保持JavaScript代码的可读性和可维护性。如果您试图加快下载时间并加快JavaScript速度,那么您应该做的是创建JavaScript代码的副本。。。不破坏您的原始JavaScript代码。当涉及到小型化和优化时,是完成这项工作的最佳工具。要了解更多关于和的信息,请参阅链接。

如果宽度或高度为0怎么办?@Wallacolo-这是答案的滥用部分,如果宽度=0是一个属性,或者它找不到宽度,则分别为400或500…想必您不需要0高度或宽度对话框窗口。还要注意的是.width和.height在隐藏时总是返回0,这就是为什么我们坚持使用这里的属性。jQuery有.width和.height方法,它们比attr方法更干净。好的,如果它是弱类型的,那么JavaScript中任何变量或对象的默认值是什么?@Peter-如果你看我的评论……当元素被隐藏时,这些值将不起作用,它们将返回0,因为他正在打开一个对话框,我打赌元素被隐藏@coffeeaddict-根据具体情况,它们将是未定义/错误或0,对于前2个,val | |默认值将起作用。如果宽度或高度为0怎么办?@Wallacolo-这是答案的滥用部分,如果宽度=0是一个属性,或者它找不到宽度,它将分别是400或500…大概您不需要0高度或宽度的对话框窗口。还要注意的是.width和.height在隐藏时总是返回0,这就是为什么我们坚持使用这里的属性。jQuery有.width和.height方法,它们比attr方法更干净。好的,如果它是弱类型的,那么JavaScript中任何变量或对象的默认值是什么?@Peter-如果你看我的评论……当元素被隐藏时,这些值将不起作用,它们将返回0,因为他正在打开一个对话框,我打赌元素被隐藏@coffeeaddict-根据具体情况,它们将是未定义的/false或0,对于前2个,val | | default将起作用。所以不需要在JavaScript中检查空字符串?基本上只需将其作为布尔值进行检查?这取决于您的需要。如果检查身高或身高
var height = dialogDiv.attr("height") || 500;
var width = dialogDiv.attr("width") || 400;
var resizable = dialogDiv.attr("resizable") || false;


宽度,我通常会计算所有这些值-null、未定义、false、0和0,在大多数情况下,就像它不存在一样。您可能不是这样,例如0,因此您可能需要更严格的检查。空字符串是Javascript中的错误值。==false是true,但是,===false是false,因为添加了类型检查。所以不需要在JavaScript中检查空字符串?基本上只需将其作为布尔值进行检查?这取决于您的需要。如果检查高度或宽度之类的值,我通常会计算所有这些值——null、undefined、false、0和0,在大多数情况下,就像它不存在一样。您可能不是这样,例如0,因此您可能需要更严格的检查。空字符串是Javascript中的错误值。==false是true,但是,由于添加了类型检查,===false是false。我不同意,我说在这种情况下这是可以的,开发人员应该尽可能减少if语句的行数。我只是不知道如何在JavaScript中实现这一点。以C和其他OOP语言为例。是的,JavaScript不是一种OOP语言,而是快捷方式的概念,这| |这与我们在C中使用的相同,在C中可以使用字符串myString=!string.IsNullOrEmptysomeString?someSring1:someString2;缩小会减少很多。。。但最终减少代码行+缩小将对减少页面占用有最大的影响。@coffeeaddict,闭包编译器不仅仅是缩小;它还执行静态代码分析,并生成更紧凑和优化的代码。我不同意,我认为在这种情况下没有问题,开发人员应该尽可能减少if语句的行数。我只是不知道如何在JavaScript中实现这一点。以C和其他OOP语言为例。是的,JavaScript不是一种OOP语言,而是快捷方式的概念,这| |这与我们在C中使用的相同,在C中可以使用字符串myString=!string.IsNullOrEmptysomeString?someSring1:someString2;缩小会减少很多。。。但最终减少代码行+缩小将对减少页面占用有最大的影响。@coffeeaddict,闭包编译器不仅仅是缩小;它还执行静态代码分析,并生成更紧凑和优化的代码。酷,好知道。。。我不知道你可以像其他语言一样在JS中这样做。很酷,很高兴知道。。。我不知道你可以像其他语言一样在JS中实现这一点。我认为开发人员非常了解三元运算符。如果不是,那就倒霉了。我对它们做了一个例外,因为很多语言都使用它们,我们在C中也广泛使用它们,所以它基本上得到了与C类似的turnary运算符语法。这没什么错。三元运算符非常棒。我认为开发人员非常了解三元运算符。如果不是,那就倒霉了。我对它们做了一个例外,因为很多语言都使用它们,我们在C中也广泛使用它们,所以它基本上得到了与C类似的turnary运算符语法。这没什么错。三元运算符。您可以切换到使用一个真支撑样式您可以切换到使用一个真支撑样式