javascript中的自增与自减

一直都对自增与自减的执行顺序有点糊涂,今天查了资料,来总结一下

a++(a--),就是指当时计算a,当下一次使用这个变量的时候才执行++或者--

++a(--a),就是指当时就计算++或者--

例1:

var c =1;
var b = (c++)+c;
alert(b);//3

此时就是,先计算c++,因为表达式中,还存在一个c,所以此时(暂时将c++看成整体a)a = 1,此后c立即增1即a=2,接着计算第二个c=1,

然后将a+c的值3赋给b

例2:

var c =1;
var b = (++c)+(++c);
alert(b);//5

此时,先计算++c=2,所以第二个c=2,然后第二个c再自增++c=3,然后执行2+3的值5赋值给b

例3:

var c =1;
var b = (c++)+3;
alert(b);//4

此时,显示计算c++的值为1,然后执行1+3=4赋值给b,因为没有第二次使用c,所以答案是4而不是5;

例4:

var c =1;
var b = (c++)+(c++);
alert(b);//3

alert(c);//3

此时就是,先计算c++,因为表达式中,还存在一个c,当计算第二个c时,第一个c自增1变成2,所以最后的答案是2+1=3,而不是4.

但是当alert(c)的时候,有一次使用了c,所以此时c再次自增1得到3.

时间: 2024-10-07 18:16:46

javascript中的自增与自减的相关文章

算术运算符中的自增与自减的注意事项

++.--两种运算符都是单目运算符,具有向右结合性(也就是优先与运算符右边的变量结合),而且他们的优先级比其他算术运算符高.当++或--运算符置于变量的左边时,称为前置运算,表示先进行自增或自减运算再使用变量的值,而当++或--运算符置于变量的右边时,称为后置运算,表示先引用变量的值再自增或自减运算. 如,设i=1,j=2,则在计算++i+j--的结果时,先进行++i运算,得i=2,再进行j--运算,根据后置运算规则可知,系统将先引用j的原始值2与i的新值2相加,之后再进行j--,得j=1.因此

以php中的自增自自减运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据

1 // 环境 2 // 3 // php版本 4 // PHP 7.0.33-0+deb9u1 (cli) (built: Dec 7 2018 11:36:49) ( NTS ) 5 // Copyright (c) 1997-2017 The PHP Group 6 // Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies 7 // with Zend OPcache v7.0.33-0+deb9u1, Copyrig

关于PHP中的自增、自减操作的奥秘

首先看一道面试题: $a = 1; $b = &$a; if ($b == $a++) echo "true"; else echo "false"; 首先,创建了一个变量$a,并且将数值设定为了1: 然后,创建了一个变量$b,并将其作为对$a的一个引用: 最后这个判断语句中,包含两个opcode:POST_INC 和 IS_EQUAL.首先执行的是先返回后自增语句(POST_INC),首先返回1,然后$a自增为了2,因为$b是$a的一个引用,$b也是2.然

JavaScript中数组的增删改查

                                           数组的增加 ary.push()   向数组末尾添加元素,返回的是添加后新数组的长度,原有数组改变 ary.unshift()  向数组开头添加元素,返回的是添加后新数组的长度,原有数组改变 var ary=[1,2,3,4]; var res=ary.unshift(6); console.log(res); ---->5 返回的是新数组的长度 ary.splice(n,m,x)从索引n开始删除m个元素,把新

Java 自增、自减

i++/i-- 先使用变量的值,然后改变变量的值: ++i/--i 先该表变量的值,然后使用变量的值: 学习Java的时候没有思考过java中变量自增的原理,今天遇到一道java题目,有点懵:int i = 0: i = i++; 最终变量i的值到底是变成1呢还是保持为0呢? java中变量自增.自减的实现其实使用了一个临时中间变量作为缓存. 以i++为例: 1 public static void main(String[] args) { 2 int i = 0; 3 int j = i++

如何处理JavaScript 中的货币值?

金钱无处不在. 无论在银行应用程序.电子商务网站还是证券交易所平台,我们每天都在与金钱互动.我们也越来越依赖技术来处理问题. 然而,关于如何以编程处理货币价值尚无共识.虽然金钱是现代社会中普遍存在的概念,但相较于日期和时间之类的东西,它并不是任何主流语言中的一流数据类型.结果,每一种软件都有自己的处理方式,且伴随着陷阱. 陷阱#1:金钱是数字? 当你需要代表钱时,你的第一直觉可能是使用一个数字. 金钱只不过是一个数值,对吧? 错了. 货币价值的一部分与另一对象有关:货币.没有10"钱"

【干货理解】理解javascript中实现MVC的原理

理解javascript中的MVC MVC模式是软件工程中一种软件架构模式,一般把软件模式分为三部分,模型(Model)+视图(View)+控制器(Controller); 模型:模型用于封装与应用程序的业务逻辑相关的数据以及对数据处理的方法.模型有对数据直接访问的权利.模型不依赖 "视图" 和 "控制器", 也就是说 模型它不关心页面如何显示及如何被操作. 视图:视图层最主要的是监听模型层上的数据改变,并且实时的更新html页面.当然也包括一些事件的注册或者aja

自增、自减运算符的前缀和后缀

试卷中有这么一道题目: 1 2 int a = 4; (++a) += i; 求a的数值,正确答案是10. 如果你认为这道题重点只是考察运算符优先级,可能很容易得到正确的答案. 但是,考虑过为什么下面的代码无法编译么? 自己在笔试时,考虑到了关于表达式作为赋值运算符左值的问题,但是自己确实又对重载"++"操作符的实现机制和函数原型不很了解,就误认为"a++"和"++a"这两种写法都不能作为赋值运算符左值,从而以为这道题出错了,或者故意考察这一点,

js实现购物车数量的增加与减少,js实现购物车数量的自增与自减

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-