我在SoloLearn上挑战,发现了这一点:
var x = 5;
document.write(x * x++);
// will output 25
但是如果我们用PHP编写同样的东西:
$x = 5;
echo $x * $x++;
// it will output 30!
这是东西,不是吗?
那么普通程序员如何向他的祖母解释这一点?
答案 0 :(得分:1)
原因是Undefined order of evaluation在PHP中:
运算符的优先级和关联性仅确定表达式的分组方式,而没有指定求值顺序。在一般情况下,PHP没有指定表达式的计算顺序,而应避免采用假定特定评估顺序的代码,因为行为可能在PHP版本之间或取决于周围的代码而改变。