JavaScript运算符:递增和递减(++i,--i 和 i++,i-- 的区别)
递增和递减操作符直接借鉴自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-- 的区别)的更多相关文章
- PHP:第一章——PHP中的算术运算符/递增、递减运算符/赋值运算符
算术运算符 //$a=10; $b=5; //取反: //echo -$a;//输出:-10: //加法: //echo $a+$b;//输出:15 //减法: //echo $a-$b;//输出:5 ...
- JavaScript运算符:递增递减运算符前置和后置的区别
从两段代码说起 var num1 = 2; var num2 = 20; var num3 = --num1 + num2; var num4 = num1 + num2; console.log(n ...
- javascript运算符语法概述
× 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...
- javascript运算符与表达式
表达式 表达式是关键字.运算符.变量以及文字的组合,用来生成字符串.数字或对象.一个表达式可以完成计算.处理字符.调用函数.或者验证数据等操作. 表达式的值是表达式运算的结果,常量表达式的值就是常量本 ...
- javascript运算符——算术运算符
× 目录 [1]一元加 [2]一元减 [3]递增[4]递减[5]加法[6]减法[7]乘法[8]除法[9]求余 前面的话 javascript中的算术操作主要通过算术运算符来实现,本文将介绍算术运算符的 ...
- Java的自动递增和递减
和C 类似,Java 提供了丰富的快捷运算方式.这些快捷运算可使代码更清爽,更易录入,也更易读者辨读.两种很不错的快捷运算方式是递增和递减运算符(常称作"自动递增"和"自 ...
- 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 ...
- js验证连续两位数字递增或递减和连续三位数字相同
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- JavaScript 运算符
JavaScript 运算符 JavaScript 运算符用于赋值,比较值,执行算术运算等. JavaScript 算术运算符 算术运算符用于执行两个变量或值的运算. 赋值 y = 5, 以下表格将向 ...
随机推荐
- 洛谷P1156 垃圾陷阱 dp
正解:dp 解题报告: 这儿是传送门! 话说最近怎么神仙们都开始狂刷dp,,,感觉今天写了好多dp的题解的样子?(也就三四道其实× 然后这题,首先看到要么吃要么堆起来就会想到01背包趴?然后就考虑设方 ...
- Web开发者应知的URL编码知识(转)
原文出处: lunatech 译文出处:oschina - 桔子, lwei, 史涛, Khiyuan, super0555, LinuxQueen, 抛出异常的爱 本文首先阐述了人们关于统一资源 ...
- WPF自定义代码启动应用程序启动方式
删除app.xaml 添加App.cs类 第一种方式: class App { [STAThread] static void Main() { ...
- Java Thread 如何处理未捕获的异常?
Java Thread是不允许异常抛出到本线程之外的,Runnable接口的public abstract void run()是不允许throws Exception的,这在编译时就通不过. 线程异 ...
- jquery 重复导入问题
$(...).bootstrapTable is not a function
- [py][mx]实现按照课程机构排名,按照学习人数排名
原型是 实现效果 因为要按照这两个指标排名, 模型中现在还没有这2个字段(整数),所以需要修改模型. 修改模型,添加2个排序指标的字段 class CourseOrg(models.Model): . ...
- uva10817 dijkstra
大白书P330 #include <iostream> #include <cstdio> #include <algorithm> #include <st ...
- Java实现动态规划法求解0/1背包问题
摘要: 使用动态规划法求解0/1背包问题. 难度: 初级 0/1背包问题的动态规划法求解,前人之述备矣,这里所做的工作,不过是自己根据理解实现了一遍,主要目的还是锻炼思维和编程能力,同时,也是为了增进 ...
- CentOS禁用笔记本touchpad
自己在家笔记本装来个双系统玩玩,发现触摸板很烦人,禁用! 1.安装一个小神器 yum install xorg-x11-apps 2.查看你到输入硬件对应的id,方便禁用命令 [root@huangz ...
- Python3:sqlalchemy对sybase数据库操作,非sql语句
Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...