三元运算符中的表达式作为函数

时间:2015-02-04 02:05:23

标签: javascript

3>4?function1():function2()

是否允许在三元运算符中使用函数? 我知道你可以用它来表示价值,但对于我不确定的功能。

3 个答案:

答案 0 :(得分:3)

你可以。但是像这样

var func = 3 > 4 ? function(){
  console.log("3 is not greater than 4");
} : function(){
  console.log("3 IS greater than 4");    
};

现在func有一个已有条件设置的函数引用。将其func()调用将导致"3 IS greater than 4"

但是,如果您已经创建了该函数,那么只需参考即可。你不应该叫它。只需传递参考。

var func = 3 > 4 ? func1 : func2;

答案 1 :(得分:1)

你可以做到

var f = 3>4?function(){console.log("left")}:function(){console.log("right")}

或使用您的修改

var f = 3>4?function1:function2

然后f将是函数(不是函数的结果)

f()

或者如果你想要那些函数返回的值

var v = 3>4?function1():function2()

v现在将是那些返回的函数

答案 2 :(得分:0)

这是有效的JavaScript:

var b = true; 
var a = b == true ? function(){ return 1; } : function(){return 2; } 

afunction,它取决于三元条件,正如您(希望)期望的那样。

如果您希望a代替函数的返回值 - 请调用它。

var b = true; 
var a = b == true ? (function(){ return 1; }()) : (function(){return 2; }())