在条件表达式中声明变量(三元运算符)

时间:2013-09-28 21:21:43

标签: javascript conditional-operator

是否可以在条件表达式中声明变量?

例如: 下面的代码返回语法错误(因为我在条件表达式中声明了变量x。)。

var a = document.getElementById("userData");
var d = a.value;
function() {
(d.length>15)?(
 alert("your input was too long")):(
 var x = parseInt(d).toString(2), 
 a.value=x 
 );
 }

显然可以通过在语句外添加var x;来解决这个问题,但是可以在这里声明变量吗?

3 个答案:

答案 0 :(得分:7)

  

是否可以在条件表达式中声明变量?

没有。 var是一个语句,conditional expression的操作数是表达式。语言语法不允许。值得庆幸的是

答案 1 :(得分:1)

您可以使用立即调用的函数执行此操作:

(d.length>15)?(
    alert("your input was too long")):
    (function(){
        var x = parseInt(d).toString(2);
        a.value=x;
    }())
);

但请注意,x变量不会存在于内部函数之外。 (在评估表达式之后,我无法判断您是否希望它存在。)

答案 2 :(得分:0)

没有。但您可以使用undefined对其进行初始化 并设置条件。

function Test()
{
    d = 25.6654;
    var x = (d.toString().length > 15) ? parseInt(d).toString() : undefined;

    alert(typeof x === "undefined");
}

然后您可以使用if(typeof x == "undefined") //do something