3

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

例如:下面的代码返回一个语法错误(因为我已经在条件表达式中声明了变量 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;在语句之外添加来解决,但是可以在这里声明变量吗?

4

3 回答 3

8

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

No.var是一个语句,条件表达式的操作数是表达式。语言语法不允许。谢天谢地。

于 2013-09-28T21:27:03.933 回答
1

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

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

但请注意,该x变量不会存在于内部函数之外。(我不知道你是否希望它在表达式被评估后存在。)

于 2013-09-28T21:25:44.310 回答
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

于 2013-09-28T21:25:03.157 回答