您能解释一下这两个逻辑操作之间的区别吗:
let x = 1;
console.log('x = ' + x);
console.log('x === x++ : ' + (x === x++));
x = 1;
console.log('x = ' + x);
console.log('x++ === x : ' + (x++ === x));
发布于 2019-12-25 11:07:57
后缀增量(y = x++)确实增加了值,但计算结果是它以前的值。它几乎等于:
x² = x; // evaluate previous value of x
x += 1; // increase x
y = x²; // use previous value因此,x === x++等于:
// evaluate left side of ===
x¹ = x;
// evaluate right side
x² = x;
// ++
x += 1;
// comparison
x¹ === x² // true我们的x++ === x是:
// evaluate left side
x¹ = x;
// ++
x += 1;
// evaluate right side
x² = x; // x was already incremented!
// comparison
x¹ === x²发布于 2019-12-25 11:01:07
X === x++:首先比较x与x,然后x++ x++ === x:第一个x++,然后将x++的结果与x进行比较
发布于 2019-12-25 11:14:25
在javascript中计算===运算符时,它首先计算左操作数,然后计算右操作数,然后在最后一个操作数中进行比较。见ecma262。
并且,在计算x++时,x的值会发生变化,而x++的结果是x的原始(不变)值。
因此,在x === x++中,x和x++都计算为x的原始值,在此之后x的值发生了变化。结果是true。
在x++ === x中,计算左x++时更改x值,左操作数计算为原始值。但在此之后,右operand将执行操作数,因此它将计算为更改后的x值。结果是false。
https://stackoverflow.com/questions/59477674
复制相似问题