Javascript:数学运算方法
Javascript: Mathematical operation methods
在此代码上,第一个警报框显示-3
,我只是想到这一点。这怎么可能?至于我对此的了解,是应该警觉-2
,我缺乏了解的地方?请
var x = 6; var y=8;
alert(x++-++y);
alert(x);alert(y);
++
一元运算符 - 来自C,也许是B,也许是PL/I的遗留 - 可以用作前增量或后增量运算符。如果将其放在 l 值(变量引用(之后,则表达式的值是变量递增前的值。该表达式具有递增变量值并将其存储回去的副作用。
因此:
x++
的值是6
,因为这是x
在递增之前的值。++y
的值是9
的,因为++
运算符被用来预递增变量y
-
6 - 9
-3
许多计算机指令集架构都包括用于机器寄存器和/或存储器位置的递增前和后递增寻址模式,以方便各种任务,特别是从内存区域加载值并递增地址寄存器以准备获取下一个值的过程。我一直强烈怀疑这些概念向上渗透到高级语言中,以提供类似的便利。
语句
x++
和语句++x
之间存在差异。前者将返回 x 的原始值,而后者将返回 x 的new
值。
结果,计算结果为 6(x 的起始值(减去 9(y 的新值(。
前导++
将在操作后将值加 1,而尾随++
将在操作前应用该值。因此6-9=-3
x++ 返回递增 6 之前的值。
++y 返回递增后的值 9。
6 - 9 = -3
x++ => 6 // postfix
++y => 9 // prefix
所以6 - 9 = -3
根据 MDN 上的后缀/增量 (++( 文档:
如果使用后缀,运算符在
- 操作数后(例如,x++(,则在递增之前返回值。
- 如果在操作数之前使用带有运算符的前缀(例如,++x(,则它在递增后返回值。
x++ 直到操作后才会更改 x 值,因此它是 6。
++y 在操作之前更改值,因此该值变为 9。
因此,第一个警报显示 -3。
第二个警报没有帮助,因为您看到的值现在已更改为 x (7( 而不是 6。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- toLocaleDateString和toLocaleString方法不尊重机器时区
- 有条件更新d3.js力图中节点的最佳方法
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- Javascript:数学运算方法