zoukankan      html  css  js  c++  java
  • 关于js中的i++和++i

      印象中记得以前学C语言的时候,对于i++和++i,有一个是先增,有一个是后增,以至于我老觉得在for循环体里对某个变量进行+1的时候,总是不敢用i++和++i,怕会出现我以为它加了1,但实际上它是在下一次循环里才加了1的这种情况,所以总是用i+=1。今天想起来这个事,所以特地抽时间实践了一下,才发现自己想错了,记岔了,哈哈。下面记录一下i++和++i的区别。

      Q1:在循环体里对i变量进行++i和i++,有什么区别?

      A1:来实践一下

    1 let a = 1
    2 for (let i = 0; i < 1; i++) {
    3     console.log(a)  // 输出1
    4     a++
    5     console.log(a)   // 输出2
    6 }
    1 let a = 1
    2 for (let i = 0; i < 1; i++) {
    3     console.log(a)  // 输出1
    4     ++a
    5     console.log(a)  // 输出2
    6 }

       由上面两个小事例可以发现,i++和++i在循环体里使用的效果是一样的,都能立即对变量进行+1,而无需到下一次循环时才生效,所以我之前担心的点,完全是瞎担心~同样的,因为这样,所以其实在循环条件里用i++或是++i,都不影响效果,用哪个就看个人喜欢啦。

     1 for (let i = 0; i < 3; i++) {
     2     console.log(i)
     3 }
     4 // 0
     5 // 1
     6 // 2
    1 for (let i = 0; i < 3; ++i) {
    2     console.log(i)
    3 }
    4 // 0
    5 // 1
    6 // 2

      Q2:i++和++i在什么情况下会有差别?

      A2:在用于运算的时候会有偏差!来看以下例子:

    1 let a = 1
    2 let b = ++a
    3 console.log(a)    // 输出2
    4 console.log(b)    // 输出2
    1 let a = 1
    2 let b = a++
    3 console.log(a)    // 输出2
    4 console.log(b)    // 输出1

       由以上例子可以看出,对于进行自增的变量来说,是没有区别的,但是对于被赋值的变量来说,一个是成功赋值,另一个却貌似只赋值到了自增之前的数值。

      出现这种情况,是因为在js中++这个操作符在变量前面时,会先对变量进行自增,然后再将自增后的结果赋值给等号左边的变量;当++操作符在变量后面时,会先将变量目前的值赋值给等号左边的变量,然后再进行自增,总而言之一句话:

        ++在前先自增,++在后先赋值

      Q3:i和++之间可以有空格吗?

      A3:我们来做三个实验:① i ++; ② i+ +; ③ i + +

    1 let i = 1
    2 i ++
    3 console.log(i)     // 输出2
    1 let i = 1
    2 i+ +
    3 console.log(i)    // 输出1,并且输出了一个NaN
    1 let i = 1
    2 i + +
    3 console.log(i)    // 输出1,并且输出了一个NaN

      由以上实验可得知,++作为一个操作符,中间是不能存在空格的,但是与被操作的变量之间是可以存在空格的,这一点和其他运算符没有区别。

      Q4:出现三个+号怎么办?

      A4:来实践一下

    1 let a = 1
    2 let b = 0
    3 let c = a +++ b
    4 console.log(c)    // 输出1
    5 console.log(a)    // 输出2
    6 console.log(b)    // 输出0

       由以上代码可得知,a是进行了自增的,b没有变,所以当三个+连接出现时,其实是会被解析成 let c = a++  +b,若想得到不一样的结果,需要我们给+之间增加空格,来表达不一样的意思,如下:

    1 let a = 1
    2 let b = 0
    3 let c = a + ++ b
    4 console.log(c)    // 输出2
    5 console.log(a)    // 输出1
    6 console.log(b)    // 输出1

       结束:

      以上就是关于i++和++i的个人总结,虽然可以区分出他们之间的区别了,不过在运算时最好还是少用,因为对于代码理解不是特别友好,尽量还是用简明一点的表达式。

  • 相关阅读:
    随机点名系统
    JQuery
    百度搜索下拉提示
    正则表达式
    严格模式
    CSS引入方式有哪些,区别是什么
    Js中的函数
    float浮动造成高度塌陷的解决办法
    PC端页面开发基础-问题总结(一)
    PC端页面开发基础-IE6常见CSS解析Bug及Hack
  • 原文地址:https://www.cnblogs.com/happymental/p/11118636.html
Copyright © 2011-2022 走看看