一道js面试题目


下面的输出结果是什么?


 var x =  2;
console.log(x+++x);

前端面试题 JavaScript

我真的很纯洁 9 years, 2 months ago

javascript 中一元运算符的优先级高于二元运算符

没有昵称啊啊啊 answered 9 years, 2 months ago

5


 var x =  2;
console.log(x);//2
console.log((x++)+x);//5
console.log(x);//3

实际上考的是 x++ ++x 的区别


 console.log(++x+x)//6

Stephen answered 9 years, 2 months ago

console.log(x+++x)
等价于
console.log(x+(++x));// 2+3=5

XX圣地亚哥 answered 9 years, 2 months ago

后缀式运算符是在计算过包含它们的表达式后才进行增量或减量运算的

参考W3School ECMAScript 一元运算符


 var x = 2;
// x++ === 2 true  若为 ++x === 3 true    
x++ + x; // 2 + 3 === 5 true

johniff answered 9 years, 2 months ago


 var x =  2;
console.log(x+++x);

等价于


 var x =  2;
console.log( x++ + x);

主要是以下两点:

  1. 运算符优先级关系:
    ++ > + ,这就是为什么不理解成 x + ++x 的原因,当然在这里的结果凑巧是一样的。

  2. 前自增和后自增的区别:
    x++ ++x 的区别,C语言里面也有。可以尝试输入以下例子对比:


 var x =  2;
console.log(x++);    // 2
console.log(++x);    // 3

更形象的例子:


 var x =  2;
console.log(x+++x);      // 5
console.log(x+++x++);    // 5

黑貓キキ君 answered 9 years, 2 months ago

Your Answer