递增和递减操作符直接借鉴自C,而且各有两个版本:前置型 (递增 ++i ,递减 --i )和 后置型 (递增 i++ ,递减 i-- )。书本上对两者的定义是:前置型应该位于要操作的变量之前,而后置型则应该位于要操作的变量之后。what?怎么那么难理解,换一种通俗易懂的语言去描述应该是咋样的......,结合提供代码,一顿白眼.....

前置型 (递增 ++i ,递减 --i ):  不就是先自身计算,再赋值给变量(先计算自己身上增加,减少了多少钱,再把它存到自己的银行卡里或者还给债主);
后置型 (递增 i++ ,递减 i-- ):不就是先将自身的值赋值给变量,然后再自身计算(先把自己原本身上的钱存到自己的银行卡里或者还给债主,然后在计算在原来基础上自己增加,减少了多少钱);

懂了没?假设还不懂,那现在开始给你看看两种方式下,你的钱是怎么流通的哈:

 一、前置型(递增++i,递减--i)

假设你有100块(变量i=100) ,那么前置递增为 ++i 。
var i = 100;
alert(i);         => 100
++i;      => 101   先计算自己身上增加了多少钱
alert(i);         => 101       再把它存到自己的银行卡里或者还给债主

也相当于如下的操作效果:

var i = 100;
i=i+1;   => i=100+1=101;

执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的。(在计算机科学领域中,这种情况通常被称作副效应)
,看下面的例子:

var age = 29;
var anotherAge = --age + 2;
console.log(age)          // 28 (age = age - 1)
console.log(anotherAge);       // 30 (anotherAge = age - 1 + 2)

这个例子中变量 anotherAge的初始值等于变量 age 的值前置递减( age = age - 1 )之后加上 2 。就是age自身先执行减法操作(age=age-1), age 的值变成了28,然后再加上 2,值就是30。

另外在JavaScript运算符中,前置递增( ++i )和递减( --i )与执行语句的优先级相同,因此整个语句会 从左至右被求值 。再来看一个示例:

var num1=2;

var num2=20;

var num3=++num1 + num2;

var num4=num1+num2;

alert(num1);                   // 3

alert(num3);       // 23

alert(num4);                 //  23

在这里,num3等于23,是因为num1先自身执行了加法操作才与num2相加。而变量num4也等于23,是因为相应的加法操作也使用了num1自身执行了加法操作后的值。

二、后置型(递增i++,递减i--)

假设你有100块(变量i=100) ,那么前置递增为 ++i 。
  var i = 100;
  alert(i);  => 100         
  i++;    => 100     先把自己原本身上的钱存到自己的银行卡里或者还给债主
  alert(i);  => 101            然后在计算在原来基础上自己增加,减少后一共还有多少钱

把递增操作符放在变量后面并不会改变语句的结果,因为递增是这条语句的唯一操作。但是当语句中还包含其他操作时,区别就会不一样了。看下面的例子:
var num1=2;
var num2=20;
var num3=num1++  +  num2;
var num4=num1+num2;
alert(num1);             =>  3  
alert(num3);             =>  22 // var i; i=num1=2; num1=num+1=3 ; num3=i + num2;
alert(num4);             =>  23 //  num1+num2;

前置递增(递减)&&后置递增(递减)

1.前置递增(++): 在变量的前面,先自身执行加法操作后在赋值(++i);

2.后置递增(++): 在变量的后面,先赋值后在执行加法操作(i++);

3.前置递减(--): 在变量的前面,先自身执行减法操作后在赋值(--i);

4.后置递减(--): 在变量的前面,赋值后在执行减法操作(i--);

总结,希望这篇文章对你理解递增和递减(++i,--i 和 i++,i-- 的区别)有帮助,分享技术,分享快乐!

JavaScript运算符:递增和递减(++i,--i 和 i++,i-- 的区别)的更多相关文章

  1. PHP:第一章——PHP中的算术运算符/递增、递减运算符/赋值运算符

    算术运算符 //$a=10; $b=5; //取反: //echo -$a;//输出:-10: //加法: //echo $a+$b;//输出:15 //减法: //echo $a-$b;//输出:5 ...

  2. JavaScript运算符:递增递减运算符前置和后置的区别

    从两段代码说起 var num1 = 2; var num2 = 20; var num3 = --num1 + num2; var num4 = num1 + num2; console.log(n ...

  3. javascript运算符语法概述

    × 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...

  4. javascript运算符与表达式

    表达式 表达式是关键字.运算符.变量以及文字的组合,用来生成字符串.数字或对象.一个表达式可以完成计算.处理字符.调用函数.或者验证数据等操作. 表达式的值是表达式运算的结果,常量表达式的值就是常量本 ...

  5. javascript运算符——算术运算符

    × 目录 [1]一元加 [2]一元减 [3]递增[4]递减[5]加法[6]减法[7]乘法[8]除法[9]求余 前面的话 javascript中的算术操作主要通过算术运算符来实现,本文将介绍算术运算符的 ...

  6. Java的自动递增和递减

    和C 类似,Java 提供了丰富的快捷运算方式.这些快捷运算可使代码更清爽,更易录入,也更易读者辨读.两种很不错的快捷运算方式是递增和递减运算符(常称作"自动递增"和"自 ...

  7. JavaScript运算符

    JavaScript运算符 1.算数运算符 设定a = 5. 运算符 描述 例子 结果 + 加 b=a+2 b=7 - 减 b=a-2 b=3 * 乘 b=a*2 b=10 / 除 b=a/2 b=2 ...

  8. js验证连续两位数字递增或递减和连续三位数字相同

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  9. JavaScript 运算符

    JavaScript 运算符 JavaScript 运算符用于赋值,比较值,执行算术运算等. JavaScript 算术运算符 算术运算符用于执行两个变量或值的运算. 赋值 y = 5, 以下表格将向 ...

随机推荐

  1. MAC OSX

    你可以输入下面的命令来查看IPv4端口:(最好加 sudo) # lsof -Pnl +M -i4

  2. Python开发【Django】:分页、Cookie和Session

    分页 1.简单分页 涉及xss攻击,需要用到mark_safe方法,使用此方法字符串传输到后端后,已html形式显示,而非字符串 HTML文件: <!DOCTYPE html> <h ...

  3. JS&CSS压缩工具YUICompressor

    YUI Compressor 是一个用来压缩 JS 和 CSS 文件的工具,采用Java开发. YUI Compressor下载地址:http://www.jb51.net/softs/25860.h ...

  4. R语言apply()函数用法

    在R语言的帮助文档里,apply函数的功能是: Retruns a vector or array or list of values obtained by applying a function ...

  5. Android初体验之Monkey和MonkeyRunner

    原文地址https://blog.csdn.net/mad1989/article/details/38087737 Monkey 什么是Monkey Monkey是Android中的一个命令行工具, ...

  6. 爬取51job职位信息之编码问题

    兴趣来潮,爬了下51job,但是遇到编码问题!以下是简单的一段代码 获取整个页面数据 # -*- coding:utf-8 -*- import requests import sysreload(s ...

  7. http之请求方法

    根据HTTP标准,HTTP请求可以使用多种请求方法.HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法.HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE ...

  8. 2018年浙江中医药大学程序设计竞赛 Solution

    Problem A. Jhadgre的C语言程序 签. #include <bits/stdc++.h> using namespace std; int main() { puts(&q ...

  9. 怎样在linux下对U盘进行格式化和分区

    说明,为了不做无用功,首先必须卸载要分区的设备,分区才能执行成功.通过命令umount /media/?? 或者umount /mnt/??? 看你的实际情况,这一步必不可少.1.首先通过命令fdis ...

  10. Linux学习笔记之Centos7设置Linux静态IP

    ***如下资料源自互联网*** 这里以CentOS 7系列为例设置静态IP,原来RedHat系列的Linux发行版可以通过setup工具方便的设置静态IP,但是在版本7之后setup工具的功能就逐渐减 ...