Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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_Google Closure Compiler_Uglifyjs - Fatal编程技术网

Javascript 条件返回或单变量返回

Javascript 条件返回或单变量返回,javascript,google-closure-compiler,uglifyjs,Javascript,Google Closure Compiler,Uglifyjs,我想知道是否有更好的方法有条件地返回值。 如果不是,它是否会使缩小的Javascript有所不同 我在检查,他们没有提到任何关于这个问题的事情。同 使用多个条件返回: function demo(x, y) { if (x < y) { return getX(); } else if (x === y) { return 'equal'; } return getY(); } 功能演示(x,y){ if(x

我想知道是否有更好的方法有条件地返回值。 如果不是,它是否会使缩小的Javascript有所不同

我在检查,他们没有提到任何关于这个问题的事情。同

使用多个条件返回:

function demo(x, y) {
   if (x < y) {
       return getX();
   } else if (x === y) {
       return 'equal';
   }
   return getY();
}
功能演示(x,y){
if(x
或具有单一回报并使用变量:

function demo(x, y) {
    var position;

    if (x < y) {
        position = getX();
    } else if (x === y) {
       position = 'equal';
    } else {
        position = getY();
    }
    return position;
}
功能演示(x,y){
var位置;
if(x
使用三元/条件运算符

在Javascript中,条件运算符可以计算为表达式,而不仅仅是语句

var result = x < y ? getX() : getY();
所以你的情况应该是这样的

var result = (x < y) ? getX() : (x == y) ? "equal" : getY();
var结果=(x
以下是对的定义

return语句停止函数的执行,并从该函数返回一个值

显然,有条件返回必须在返回之前包含一个条件。 关于偏好,顾名思义,这实际上是习惯的问题。 如果你习惯了一种语法,比如说,另一种语言,或者你更喜欢它——使用它,因为它可能会减少语法错误

关于缩小代码,我相信switch/case语法最适合于简单条件,而三元操作最适合于双边条件

(注意!前面的哲学段落)


但最后,重要的是,我相信,你会理解你写的代码。而且,凭经验,你会发现什么最适合你。

你应该关注可读性。以最容易理解的方式编写代码。如果您从返回时带有一个深嵌套条件,这可能会使将来的读取感到困惑,但是如果您在函数开始时有一系列早期退出,这可能会使代码更可读(与深嵌套相比)。分解大函数,并将混乱留给编译器处理。闭包编译器将为您的任何一个示例生成相同的结果

示例:


还是三元运算符<代码>变量位置=x@Tushar让我们说我们有3个条件:)Google没有指定,因为闭包编译器将优化这两个方法。好的,让我们来想象3个条件。我在这里更新了我的question.OP,我不想用任何其他方法来做同样的事情。我想知道哪条路更好/followed@Tushar我认为OP提到了一种做同样事情的缩小方法,而不是编写7/8行if-else。@Neel没有,当我谈到缩小Javascript时,我指的是闭包编译器、UglifyJS等。
var result = (x < y) ? getX() : (x == y) ? "equal" : getY();