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