文章目录
- 前端面试系列
- 运算符
- 记住口诀
- 先计算 后 赋值
- 赋值从右向左
- ++ 和 - -
- 计算从左向右
- 括号里的加减优先于括号外的乘除
- 交换俩数的值
- 答案
前端面试系列
js运算 笔试踩坑知识点
前端js面试题 (三)
前端js面试题(二)
前端js面试题 (一)
css前端面试题(三)
css前端面试题(二)
css前端面试题 (一)
html面试题(二)
html 高频面试题
运算符
常见的算术运算符,+
,-
,*
,%
,/
,=
,()
不常见的运算符 ++
,--
,+=
,-=
,%=
,/=
记住口诀
先计算,后赋值,计算从左向右,赋值从右向左。
先乘除后加减,括号里的加减优先于括号外的乘除。
哪些属于赋值呢 +=
,-=
,%=
,/=
,=
先计算 后 赋值
var a = 1;
var b = 2;
var d = 0;
d -= a + b
console.log(d)
赋值从右向左
var a = 1;
var b = 2;
var d = 0;
d -= a += b /= d + 1
console.log(a)
console.log(b)
console.log(d)
++ 和 - -
符号在前,先计算再运行
符号在后,先运行再计算
var a = 5;
var b = a++ + 12 + ++ a
console.log(a);
console.log(b);
var a = 5;
var b = (a ++) + (12 + -- a)
console.log(a);
console.log(b);
计算从左向右
var a = 5;
var b = 3;
b += a++ + (12 + -- a)
console.log(a);
console.log(b);
括号里的加减优先于括号外的乘除
var a = 5;
var b = 3;
b += a++ * (12 + -- a)
console.log(a);
console.log(b);
交换俩数的值
var a = 123, b = 234;
a = a + b
b = a - b
a = a - b
答案
先计算后赋值, a + b = 3, 然后 d = 0 - 3
var a = 1;
var b = 2;
var d = 0;
d -= a + b
console.log(d) // -3
同样先计算后赋值,多个赋值,从右向左
d + 1 = 1
b = 2 / 1 = 2
a = 1 + 2 = 3
d = 0 - 3 = -3
var a = 1;
var b = 2;
var d = 0;
d -= a += b /= d + 1
console.log(a) // 3
console.log(b) // 2
console.log(d) // -3
多次计算,从左向右,++ 在后先运算后加1,++在前,先加1,后运算
a++ 此时 a为 5 变为 5 + 12 + ++a
但完成转变后 a = a + 1 = 6
17 + ++ a
因为++ 在前面,a = a + 1 = 7 所以,b = 17 + 7 = 24
var a = 5;
var b = a++ + 12 + ++ a
console.log(a); // 7
console.log(b); // 24
同理类推
var a = 5;
var b = (a ++) + (12 + -- a)
console.log(a); // 5
console.log(b); // 22
var a = 5;
var b = 3;
b += a++ + (12 + -- a)
console.log(a); // 5
console.log(b); // 25
括号内的加减法优先于括号外的乘除法, 但计算还是从左向右
a++ * (12 + -- a)
变为 5 * (12 + -- a)
然后 a = a + 1 = 6
先算括号里面的加法 ,发现 --在a的前面,所以 a = a - 1 = 5,5 * (12 + -- a)
变为5 * (12 + 5) = 85
最后 b = b + 85 = 88
var a = 5;
var b = 3;
b += a++ * (12 + -- a)
console.log(a); // 5
console.log(b); // 88