JavaScript 自增和自减运算符

JavaScript中有两种方法来自增或自减一个变量的值,分别是自增运算符和自减运算符。

  • 自增运算符(++):将变量的值增加1。
let x = 5;
x++; // x 现在的值为 6
  • 自减运算符(--):将变量的值减少1。
let y = 5;
y--; // y 现在的值为 4

这两个运算符也可以放在变量的前面或后面,前缀形式(++x)和后缀形式(x++)有着不同的返回值,前缀形式会先返回自增/自减后的值,而后缀形式会先返回自增/自减前的值。

let x = 5;
let y = x++; // y 现在的值为 5,x 现在的值为 6
let z = ++x; // z 现在的值为 7,x 现在的值为 7

另外需要注意的是,JavaScript 自增和自减操作符只能用于数字类型的变量,如果使用在字符串或其他类型的变量上会抛出异常。

正确的做法是先将变量转换为数字类型再进行自增和自减操作。

例如,如果变量是字符串类型,可以使用 parseInt() 或 parseFloat() 函数将它转换为数字类型,再进行自增和自减操作。

let age = "25";
age = parseInt(age) + 1; // age 现在的值为 26

另外,在自增和自减运算符前面加一个+或-号也可以将变量转换为数字类型。

let age = "25";
age = +age + 1; // age 现在的值为 26

另外,需要注意的是,在 JavaScript 中,自增和自减运算符不能用于常量(使用 const 定义的变量)。如果需要对常量进行自增或自减操作,需要将它赋值给一个新的变量。

例如:

const x = 5;
x++; // Uncaught TypeError: Assignment to constant variable.

正确的做法是这样:

const x = 5;
let y = x;
y++; // y 现在的值为 6

总之,JavaScript 中的自增和自减运算符是非常常用的,它们可以简化代码并提高代码的可读性。在使用这些运算符时,需要注意变量的类型,并且不能对常量进行自增和自减操作。

作者:yuzhihui
出处:http://www.cnblogs.com/yuzhihui/ 声明:欢迎任何形式的转载,但请务必注明出处!!!
本文转载于网络 如有侵权请联系删除

相关文章

  • Linux简介与安装

    文章目录Linux简介Linux简介开源软件简介Linux应用领域Linux与Windows的不同Linxu字符界面的优势Linux系统安装虚拟机安装VMware的特点:建议配置虚拟机的使用2.虚拟机硬件设置3.虚拟机技巧系统分区之分区与格式化1.概念2.分区类型3.分区原理4.格式化5.附加知识分区之分区设备文件名与挂载1.Windows与Linux不同的磁盘分区流程2.设备文件名3.挂载点Linux系统安装Linux简介Linux简介Linux起源于Minix,而Minix又源于Unix。Minix是一位教授为了方便授课,所以购买了一个Unix操作系统,仿照着Unix开发了自己的操作系统Minix,并且公开源代码。但是这位教授不打算商业化,也不打算更新,没接受任何更新,因为它的目的仅仅是授课。Linus在1991年开发了Linux。Linux依然开源免费,且不断更新。 Minix和Linux以前流行都很广,但是Minix不更新,所以Linux影响力比较强大。 Linux在服务器端占有率十分高,因为它安全稳定。字符界面也比图形界面在速度和安全方便更加强。Linux系统有内核版本和发行

  • 2018-9-2-如何使用远程桌面操控局域网主机

    亲,你的服务器可用了~被控端电脑配置首先打开系统属性—远程 点击选择用户,添加 点击高级 点击立即查找—选择指定用户(确保你拥有这个用户的密码) 查询到被控制电脑的ip,可以使用cmd的ipconfig 连接远端电脑进行控制 打开远程桌面,输入被控制电脑的ip地址和需要登入的用户名,并在弹出窗口里面输入密码就成功连接上了 本文会经常更新,请阅读原文:https://xinyuehtx.github.io/post/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E6%93%8D%E6%8E%A7%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%BB%E6%9C%BA.html,以避免陈旧错误知识的误导,同时有更好的阅读体验。本作品采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接:https://xinyuehtx.github.io),不得用于商业目的,基于本文修改后的作品务必以相同的许

  • C++核心准则Enum.3:枚举类​要比普通的枚举类型好

    Enum.3:Preferclassenumsover"plain"enumsEnum.3:枚举类要比普通的枚举类型好 Reason(原因)Tominimizesurprises:traditionalenumsconverttointtooreadily.尽量减少意外性:经典的枚举类型太容易转换为整数了。Example(示例)voidPrint_color(intcolor); enumWeb_color{red=0xFF0000,green=0x00FF00,blue=0x0000FF}; enumProduct_info{red=0,purple=1,blue=2}; Web_colorwebby=Web_color::blue; //Clearlyatleastoneofthesecallsisbuggy. Print_color(webby); Print_color(Product_info::blue); 复制Insteaduseanenumclass:而使用枚举类的时候: voidPrint_color(intcolor); enumcla

  • AAAI 2020 | 中科院&云从科技:双视图分类,利用多个弱标签提高分类性能

    作者|云从科技编辑|Camel本文是对中科院信工所和云从科技共同完成,被AAAI2020录用的论文《Coupled-viewDeepClassififierLearningfromMultipleNoisyAnnotators》进行解读。 近年来,深度学习已在各种分类任务中证明了有效性,例如使用深度神经网络(DNN)在有标签的数据上训练风控模型,取得了良好效果。但在许多现实情况下,例如真实场景的视频监控和医疗图像诊断,很难收集到清晰准确的标注。 云从科技与中科院信工所发表《Coupled-viewDeepClassififierLearningfromMultipleNoisyAnnotators》,探索能够有效地利用多个弱标签的信息进行深度学习分类的方法,提出了一种从多人标注的带噪标签中进行双视图深度分类器学习的新方法。文中,我们专注于研究从多人标注的噪声标签中进行深度神经网络分类学习这一问题,将期望最大化算法的迭代估计过程看作标签视图和数据视图的相互学习问题(如图1)。我们通过让两个视图分别学习对方视图生成的伪标签,把这一问题转化为监督学习问题,并通过迭代的更新伪标签和模型参数,让

  • 挑战程序竞赛系列(58):4.6树上的分治法(1)

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/u014688145/article/details/77941761挑战程序竞赛系列(58):4.6树上的分治法(1)传送门:POJ1655:BalancingAct思路: 选择使得删除该顶点后得到的最大子树的顶点数最少的顶点作为分割顶点。为什么就是最大顶点数的最小呢?可以这么考虑,如果存在一种极度不平衡的状态,那么我们可以通过移动树的顶点,让它进入下一状态减少不平衡态,这种情况总能在不平衡态时发生。那么最大子树顶点数最小,意味着剩余顶点数最大但比这最大子树小那么一点,嗯哼,当然是最平衡的。可以证明树的重心每个子孩子的顶点数不会超过n/2,比如一个重心带两条边的情况,我们可以认为较大顶点≈较小顶点数,而总和为n-1,除一除更不会超过n/2了。参考《挑战》P361: 思路就那么一条,提供两种做法。方法1:importjava.io.BufferedReader; importjava.io.File; importjava.io.FileInputStream; importjava.io.

  • 为什么要学习Linux

    作者:Vamei出处:http://www.cnblogs.com/vamei欢迎转载,也请保留这段声明。谢谢! 本篇修改自我在知乎上回答的问题,为什么要学习Linux?我最开始用Linux是被逼的。当时用的是一台旧的笔记本电脑,做一些文字处理的工作。跑Windows动不动就死机,无奈之下安装了Ubuntu。当时只是想找一个Windows的替代品。用Ubuntu的图形化界面很多,不怎么用命令行,所以总觉得比不上Windows。当然,基本的功能还是全的。我用那台旧电脑兼职翻译,赚了2000块的“巨款”。 后来深入使用Linux,是因为做论文时要用服务器。服务器是Debian系统,只能用ssh连接。我只能可怜巴巴的对着命令行敲字了。也是在这种情况下,我才真正发现Linux的好处。Linux的优点首先,Shell编程很方便,特别是配合Linux下的各个工具,比如cat,sed,awk,grep。我经常会向服务器的任务管理器提交工作。工作太大,没有足够处理器时,就要排队等空隙。用shell编写一个小脚本,让它来替我安排工作的提交,就节省了我大量的时间。Shell编程甚至可以实现相当复杂的功能。

  • 大数据学习,为什么要先学Java?

    计算机编程语言有很多,目前用的多的就是Java,C++,Python,PHP等等。目前大多数学习大数据的人都是选择学习Java,那Java到底好在哪呢?为什么学大数据之前要先学Java呢?我们今天就来分析一下。不少想学习大数据的零基础学员都知道,学大数据部分课程之前要先学习一种计算机编程语言。大数据开发需要编程语言的基础,因为大数据的开发基于一些常用的高级语言,比如Java和.Net。不论是hadoop,还是数据挖掘,都需要有高级编程语言的基础。因此,如果想学习大数据开发,还是需要至少精通一门高级语言。Java是目前使用最为广泛的网络编程语言之一Java在2017年编程语言排行榜中一直稳居第一,为最受欢迎的编程语言!其原因在于Java不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java有很多特性Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Jav

  • 快速排序(三种算法实现和非递归实现)

    大家好,又见面了,我是你们的朋友全栈君。快速排序(QuickSort)是对冒泡排序的一种改进,基本思想是选取一个记录作为枢轴,经过一趟排序,将整段序列分为两个部分,其中一部分的值都小于枢轴,另一部分都大于枢轴。然后继续对这两部分继续进行排序,从而使整个序列达到有序。递归实现:voidQuickSort(int*array,intleft,intright) { assert(array); if(left>=right)//表示已经完成一个组 { return; } intindex=PartSort(array,left,right);//枢轴的位置 QuickSort(array,left,index-1); QuickSort(array,index+1,right); }复制PartSort()函数是进行一次快排的算法。 对于快速排序的一次排序,有很多种算法,我这里列举三种。左右指针法选取一个关键字(key)作为枢轴,一般取整组记录的第一个数/最后一个,这里采用选取序列最后一个数为枢轴。设置两个变量left=0;right=N–1;从left一直向后走,

  • 费用单

    费用单,用于处理生产费用、采购费用、销售费用、其他费用支出业务。 费用单支持往来费用和现金费用两种类型,往来费用确定跟往来单位相关的费用支出,现金费用确定企业与往来单位无关的费用支出。 生产费用包括哪些 包括各项直接支出和制造费用。1、直接支出:直接材料(原材料、辅助材料、备品备件、燃料及动力等)、直接工资(生产人员的工资、补贴)、其他直接支出(如福利费)。2、制造费用:指企业内的分厂、车间为组织和管理生产所发生的各项费用,包括分厂、车间管理人员工资、折旧费、维修费、修理费及其他制造费用(办公费、差旅费、劳保费等)。生产费用按照经济内容分类:1.外购材料。这是指企业为进行生产而耗用的一切向外购进的原料及主要材料、半成品、辅助材料、包装物、备品配件和低值易耗品等。2.外购燃料。这是指企业为进行生产而耗用的一切向外购进的各种燃料,包括固体燃料、液体燃料和气体燃料等。3.外购动力。这是指企业为进行生产而耗用的一切向外购进的各种动力,包括电力、热力和风力等。4.工资。这是指企业所有应计人生产费用的职工薪酬。5.折旧费。这是指企业按照规定计算提取并计入生产费用的固定资产折旧。6.利息支出

  • Ceph性能优化

    几个Ceph性能优化的新方法和思路(2015SHCephDay参后感)   一周前,由Intel 与Redhat 在10月18日联合举办了ShanghaiCephDay。在这次会议上,多位专家做了十几场非常精彩的演讲。本文就这些演讲中提到的Ceph性能优化方面的知识和方法,试着就自己的理解做个总结。 0.常规的Ceph性能优化方法 (1).硬件层面 硬件规划:CPU、内存、网络 SSD选择:使用SSD作为日志存储 BIOS设置:打开超线程(HT)、关闭节能、关闭NUMA等 (2).软件层面 LinuxOS:MTU、read_ahead等 CephConfigurations和 PGNumber调整:使用PG计算公式(TotalPGs=(Total_number_of_OSD*100)/max_replication_count)计算。 CRUSHMap 更多信息,可以参考下面的文章: Ceph性能优化总结(v0.94) MeasureCephRBDperformanceinaquantitativeway1,2 Ceph性能

  • Python 箱线图 plt.boxplot() 参数详解

    Python绘制箱线图主要用matplotlib库里pyplot模块里的boxplot()函数。 plt.boxplot()参数详解   plt.boxplot(x,#指定要绘制箱线图的数据; notch=None,#是否是凹口的形式展现箱线图,默认非凹口; sym=None,#指定异常点的形状,默认为+号显示; vert=None,#是否需要将箱线图垂直摆放,默认垂直摆放; whis=None,#指定上下须与上下四分位的距离,默认为1.5倍的四分位差; positions=None,#指定箱线图的位置,默认为[0,1,2…]; widths=None,#指定箱线图的宽度,默认为0.5; patch_artist=None,#是否填充箱体的颜色; bootstrap=None,# usermedians=None,# conf_intervals=None,# meanline=None,#是否用线的形式表示均值,默认用点来表示; showmeans=None,#是否显示均值,默认不显示; showcaps=None,#是否显示箱线图顶端和末端的两条线,默认显示; show

  • .NET Memory Allocation Profiling with Visual Studio 2012

    .NETMemoryAllocationProfilingwithVisualStudio2012 ThispostwaswrittenbyStephenToub,afrequentcontributortothe ParallelProgrammingin.NETblog.HeshowsushowVisualStudio2012andanattentiontodetailcanhelpyoudiscoverunnecessaryallocationsinyourappthatcanpreventitfromachievinghigherperformance. VisualStudio2012hasawealthofvaluablefunctionality,somuchsothatIperiodicallyheardevelopersthatalreadyuseVisualStudioaskingforafeaturetheIDEalreadyhasandthatthey’vejustneverdiscovered.Othertimes,Iheardevelopers

  • Android第二次作业

      姓名 学号 苏毅俊 1600802094 南加拉才让 1600802093 周泽加 1600802138 李长栋 1600802085 2.项目界面的过程分析 2.1团队项目的界面截图     2.2项目的详细介绍 功能:课堂小助手功能 模块:1.上课点名功能       2.学习资料共享功能       3.论坛功能       4.考试、习题功能 用到的知识点:UI布局及构造、互动按钮、简明的窗口组件等。 2.3代码链接: https://git.coding.net/ronzzj/Takers.git  

  • Latent semantic analysis note(LSA)

    1LSAIntroduction LSA(latentsemanticanalysis)潜在语义分析,也被称为LSI(latentsemanticindex),是ScottDeerwester,SusanT.Dumais等人在1990年提出来的一种新的索引和检索方法。该方法和传统向量空间模型(vectorspacemodel)一样使用向量来表示词(terms)和文档(documents),并通过向量间的关系(如夹角)来判断词及文档间的关系;而不同的是,LSA将词和文档映射到潜在语义空间,从而去除了原始向量空间中的一些“噪音”,提高了信息检索的精确度。 2传统方法的缺点 传统向量空间模型使用精确的词匹配,即精确匹配用户输入的词与向量空间中存在的词。由于一词多义(polysemy)和一义多词(synonymy)的存在,使得该模型无法提供给用户语义层面的检索。比如用户搜索”automobile”,即汽车,传统向量空间模型仅仅会返回包含”automobile”单词的页面,而实际上包含”car”单词的页面也可能是用户所需要的。   下面是LDA原始Paper[1]里举的一个例子: 上

  • Java中创建多线程

    Java中创建新线程有多种方式,一般从Thread派生一个自定义类,然后覆写run方法,或者创建Thread实例时,传入一个Runnable实例。两种方式可通过内部匿名类或者lambda语法进行简写。 1、通常写法 classMyTheardextendsThread{ @Override publicvoidrun(){ System.out.println("newthreadcreatedbyextendsthread"); } } classMyRunnableimplementsRunnable{ @Override publicvoidrun(){ System.out.println("newthreadcreatedbyimplementsrunnable"); } }复制 Threadt1=newMyTheard(); Threadr1=newThread(newMyRunnable()); t1.start(); r1.start();复制 2、使用内部匿名类简写 Threadt2=newThread(){ @Override publicvoidrun

  • 2018宁夏邀请赛L Continuous Intervals

    题目链接:https://nanti.jisuanke.com/t/28412 题意:   给出n个数的序列。问序列中有多少个区间满足,排序完之后任意两个相邻的数之差不大于1。 题解:   用max表示区间最大值,min表示区间最小值,cnt表示区间数字的种数。那么问题转化成求max-min=cnt+1的区间数。   用线段树维护每个区间的max-min-cnt最小值及最小值的个数,不用单独维护max,min和cnt。注意max-min>=cnt+1.   从1~n枚举R。对于每个枚举的R,更新以R为后缀的[L,R]区间的max-min-cnt值。   对于max和min可以用单调栈维护,max和min对max-min-cnt的贡献采用区间加减的形式而不是区间覆盖。   对于cnt可以用一个vis[]数组维护上一次的出现位置,然后也进行区间加减。数据是1e9的,vis[]数组可以离散一下或者用map代替。   最后对于每一个枚举的R,统计max-min-cnt的值为-1的[L,R]数。 #include<bits/stdc++.h> usingnamespaces

  • 剑指 Offer 27. 二叉树的镜像

    剑指Offer27.二叉树的镜像 难度简单140 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入:    4  / \ 2  7 /\ /\1 36 9镜像输出:    4  / \ 7  2 /\ /\9 63  1   示例1: 输入:root=[4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 复制   限制: 0<=节点个数<=1000   错解: /** *Definitionforabinarytreenode. *structTreeNode{ *intval; *TreeNode*left; *TreeNode*right; *TreeNode(intx):val(x),left(NULL),right(NULL){} *

  • 《转》优化UITableViewCell高度计算的那些事

    我是前言 这篇文章是我和我们团队最近对 UITableViewCell 利用 AutoLayout 自动高度计算和 UITableView 滑动优化的一个总结。我们也在维护一个开源的扩展,UITableView+FDTemplateLayoutCell,让高度计算这个事情变的前所未有的简单,也受到了很多星星的支持,github链接请戳我 这篇总结你可以读到: UITableView高度计算和估算的机制 不同iOS系统在高度计算上的差异 iOS8self-sizingcell UITableView+FDTemplateLayoutCell如何用一句话解决高度问题 UITableView+FDTemplateLayoutCell中对RunLoop的使用技巧 UITableViewCell高度计算 rowHeight UITableView是我们再熟悉不过的视图了,它的 delegate 和 datasource 回调不知写了多少次,也不免遇到UITableViewCell高度计算的

  • mysql(子查询)

    子查询分类: where型子查询:指把内部查询的结果作为外层查询的条件。 select*fromtdb_goodswheregoods_price>(selectgoods_pricefromtdb_goodswheregoods_name='U330P13.3英寸超极本')#查询价格高于U330P13.3英寸超极本的商品select*fromtdb_goodswheregoods_price>(selectavg(goods_price)fromtdb_goodswheregoods_cate='台式机');#查询价格高于台式机平均价格的商品复制   from型子查询:把内层的查询结果当成临时表,供外层sql再次查询。 select*from(select*fromtdb_goodswheregoods_cate!='台式机')asfwheregoods_price>2000;#查询价格表中类型不是台式机并且价格大于2000的商品 复制    in子查询:内层查询语句仅返回一个数据列,这个数据列的值将供外层查询语句进行比较。 select*fro

  • C#中的WinForm问题——使用滚动条时页面闪烁及重影问题

    当使用鼠标进行滚动查看页面时,由于页面会频繁刷新,如果页面中控件较多会导致页面出现闪烁、重影等问题,如下图所示:      在网上搜索过该问题,大部分都说使用双缓冲可以解决此类问题,即通过设置DoubleBuffered属性来减少图形的闪烁。 publicFrm_DataSel()//窗体构造函数 { InitializeComponent(); this.DoubleBuffered=true;//设置本窗体 SetStyle(ControlStyles.UserPaint,true); SetStyle(ControlStyles.AllPaintingInWmPaint,true);//禁止擦除背景. SetStyle(ControlStyles.DoubleBuffer,true);//双缓冲 }复制   但是我使用上述代码进行尝试之后,发现问题依然存在,并没有解决。 因此,本随笔可用作使用双缓冲之后依然没有解决问题的小伙伴进行查看和试验。 具体的解决方案是通过设置CreateParams的ExStyle为ExStyle 

  • [转载备份]

    http://www.ruanyifeng.com/blog/javascript/ http://www.cnblogs.com/fenglingyi/p/4285662.html

相关推荐

推荐阅读