此代码出了什么问题:
j ? typeof j : var j = 9;
未捕获的SyntaxError:意外的标记var
如果j存在,那么我想知道typeof,如果j不存在则将9分配给j。解决方案是在这之下,但我只是想知道为什么上面的代码不起作用。
if (j) { typeof j }else{var j = 9}
答案 0 :(得分:2)
您正在寻找:
var j = (j) ? typeof j : 9;
您不能在三元操作中使用var
关键字,必须先使用j
来使用它
(var j =
)
说明:
j = //assign the outcome of the conditional evaluation to 'j'
(j) //if j exists (this is where you put your conditional expression)
? //if it is true, i.e. j exists, it will be set to this value (typeof j)
: //if it is false, i.e. j doesn't exist, it will be set to this value (9)
RE您的评论:我认为这是您想要做的代码:
var j = (j) ? j : 9;
if (j !== 9) console.log(typeof j);
答案 1 :(得分:1)
var
保留字在另一个网站中:
改变这个:
j ? typeof j : var j = 9;
对此:
var j = (j) ? typeof j : 9;
答案 2 :(得分:0)
您收到错误,因为您已在代码中将语句作为三元运算符的操作数。但是,所有运算符都希望操作数是表达式。
表达式和语句之间有什么区别呢?表达式被评估为值,语句不能被评估为值。即在您的代码中var j = 9
不会向三元运算符返回任何内容。
另外,在某种程度上,你滥用三元运算符,它会返回一个值,但你不会在任何地方使用它。如果仅使用副作用,则应使用if..else
,三元运算符不会产生副作用。
正确使用在这里的其他答案中有详细解释,所以我不会再这样做了。
答案 3 :(得分:-1)
如果j存在:
zip