- =运算符,与输出结果混淆

时间:2016-10-13 21:02:51

标签: actionscript-3 operators flashdevelop

我最近在跟踪一行代码:

x -= 353 - 350

然而,答案是-3。

令我惊讶的是,我认为 - =运算符会跟随:

x = x - 353 - 350

然后等于-703

为什么实际答案为-3而非-703

我在这个网站上寻找参考: http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/operators.html

它给出的例子让我相信运算符 - =应该产生-703。

var x:uint = 5; x -= 5; // x is now 0

以上示例不会代表x = x - 5 0的方式吗?或者是否有我缺少的替代代码/逻辑?

3 个答案:

答案 0 :(得分:5)

操作员优先:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

-=的优先级为3,而+-优先级为13(更高),

所以代码执行相当于

x -= (353 - 350)
x -= (3)
x -= 3;
x = x - 3;

根据基础数学:

x -= (353 - 350)
x += -(353 - 350)
x += (-353 + 350)
x += (-3);

答案 1 :(得分:4)

我已经用Python测试了它。它似乎只是基本的算术..

假设after(function() { console.log('here at after'); request.del('http://localhost:3000/api/deleteAllTasks', function(req, res) { console.log(req); }); }); 目前为x

zero等于说x -= 353 - 350
首先得到括号的结果,然后方程只是x = x - (353 - 350)得到结果:x = 0 - 3

答案 2 :(得分:2)

Daniel和Marc是对的。

您使用错误的运算符: 要获得-703,你应该使用 - =喜欢这个

var x:int = 0;
x -= 353 + 350;
// x -= (353 + 350); 
// So => x -= 703
trace(x); //output -703

由于

x -= 353 - 350;

表示x - = 3; 同样的逻辑。