文章详情页
javascript - z=z=z++里的执行过程
浏览:129日期:2023-03-17 09:27:41
问题描述
var z = 0;z=z=z++;alert(z);
弹窗是0,为什么?
跟
var z = 0;z++;z=z;alert(z);
的区别?
问题解答
回答1:好奇你这是为了做题还是你在哪个开源项目的代码中看到过作者使用这样的书写方式, 如果是为了做题或笔试, 建议不要考虑这样的学校或公司. 因为此题毫无意义, swift3甚至去掉了++操作符, 人生短暂, 把时间浪费在让人confusing或容易出错的语法特性上不值.
回答2:两个点:
a = a++ 先赋值,后自增
赋值表达式是有返回值的,简称为表达式的值
z=z=z++;
相当于将「z=z++」表达式的值赋值给z,而「z=z++」的值等于「z++」,「z++」先使用z当前值,后自增
回答3:后置自增:n++这样的表达式会返回一个n原始值的副本,然后将n原始值++n = n++ 后置自增运算符的优先级高于赋值所以=右侧会先将n自增并返回n的原始值副本然后进行赋值操作 将n的原始值赋值给n,所以n的值不变
回答4:z++是个表达式,表达式的结果还是z,所以 z=z++相当于z=z 啥也没做,你要了解下 z++的逻辑是先返回变量的值,然后才自增。
或者你用++z,前自增是先自增,然后返回自增后的结果
回答5:等价于
a=z++;z=a;z=z;回答6:
++ 和= 运算顺序的问题 建议看一下 运算 赋值的优先级
标签:
JavaScript
相关文章:
1. javascript - npm下载的模块不完整是什么问题?2. java - Spring事务回滚问题3. css - 手机qq打开网页无法使用文件上传功能?4. javascript - 单个页面执行多个jsonp的ajax请求,如何判断一个ajax请求执行完毕执行再另一个?5. node.js - 我想让最后进入数据库的数据,在前台最先展示,如何做到?6. apache - 想把之前写的单机版 windows 软件改成网络版,让每个用户可以注册并登录。类似 qq 的登陆,怎么架设服务器呢?7. 刚放到服务器的项目出现这中错误,有高手指点吗8. javascript - JS设置Video视频对象的currentTime时出现了问题,IE,Edge,火狐,都可以设置,反而chrom却...9. python 操作mysql如何经量防止自己的程序在之后被恶意注入(说白了就是问一下python防注入的一些要点)10. mysql - 面试题:如何把login_log表转换成last_login表?
排行榜
