怎么了? j? typeof j:var j = 9;

时间:2016-01-18 16:34:47

标签: javascript

此代码出了什么问题:

j ? typeof j : var j = 9; 
  

未捕获的SyntaxError:意外的标记var

如果j存在,那么我想知道typeof,如果j不存在则将9分配给j。解决方案是在这之下,但我只是想知道为什么上面的代码不起作用。

if (j) { typeof j }else{var j = 9}

4 个答案:

答案 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