关于前置++和后置++

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了关于前置++和后置++脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

好久不写博客了,主要因为忙于找实习,以及沉迷看书。其实如果时间不忙,有好多技博客想分享。

问题

可以试着执行如下语句:

VAR a = 1;
++a++;   //ReferenceError

没错,会报错。请允许我先写两个简单的知识点,再写具体原因

优先级

后置++的优先级大于前置++优先级,这就是语法规则。

语句返回值

在浏览器内直接写代码,每条语句之后都会有返回值,如下:

关于前置++和后置++

关于为什么var语句都有返回值,其实JavaScript里面每条语句都有返回值,你只是没有在意。我觉得,只要知道每条语句都是有返回值的就足够了。另外规范中定义,a = b这种赋值语句,返回值是后者,我以前的文章中,在文章最后有证明的代码。

原因

好了,赶紧说原因。
优先级,后置++高,先执行a++,你也看到了上面的图片,a++会返回一个数,就是1。
那么之后就是执行++1,这就是报错的根本原因。
当你尝试引用一个未被定义的变量时,将会抛出一个 ReferenceError 。
++1执行时,会把1看成是一个变量,自然1没被声明过,而且1根本就是一个数值类型数据,根本不是变量,因此报错。

大一时候,学c语言,b = a++ ;是怎么执行的呢?
我的C语言老师说,先执行b = a ; 然后a++;
坑啊!真的坑啊!
其实,b = a++;就是先执行a++,此时就是a已经加上一了,只不过为什么赋值后,b的值仍旧是之前未加一的a,是因为a++的返回值就是之前的a。
因此,a++就是一步执行完的,绝不是先b等于之前的a。
我在Java下测试过,这个报错原因也是可以用上面这个原因分析的。

脚本宝典总结

以上是脚本宝典为你收集整理的关于前置++和后置++全部内容,希望文章能够帮你解决关于前置++和后置++所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。