网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 JS for循环中i++ 和 ++i的区别介绍
内容
    这篇文章主要介绍了JS for循环中i++ 和 ++i的区别介绍的相关资料,需要的朋友可以参考下
    平时都是这样写的for循环
    for(var i = 0; i < 20 ; i++){
    ....
    }
    但我看有的人这样写
    for (var i = 0; i < 20 ; ++i) {
    ....
    }
    这样会对for循环有什么影响?
    1.在for里好像没啥区别...
    但是用在赋值的时候, 就有区别了...
    var a = 1;
    var b = a++;
    var c = 1;
    var d = ++c;
    console.log(b,d); // 1, 2
    a++ 是先应用a, 然后再自加
    ++a 是先自加, 然后在应用a
    2.大概是 C/C++ 时代带来的习惯,传说 ++i 比 i++ 要快,但事实上这两者的性能在js中是差不多的。
    至于具体细节,规范里面关于自增/自减运算符是这么写的:
    对于放在前面的情况——
    UnaryExpression : ++ UnaryExpression
    Let expr be the result of evaluating UnaryExpression.
    Let oldValue be ToNumber(GetValue(expr)).
    ReturnIfAbrupt(oldValue).
    Let newValue be the result of adding the value 1 to oldValue, using the same rules as for the + operator (see 12.7.5).
    Let status be PutValue(expr, newValue).
    ReturnIfAbrupt(status).
    Return newValue.
    大致翻译一下:
    1.令expr等于当前表达式(就是++后面的部分)的结果
    2.令oldValue等于expr转换为数字的结果
    3.使用和“+”运算符一样的规则,令newValue = oldValue + 1
    4.将newValue赋值给expr
    5.整个运算式返回newValue
    对于放在后面的情况——
    PostfixExpression : LeftHandSideExpression ++
    1.Let lhs be the result of evaluating LeftHandSideExpression.
    2.Let oldValue be ToNumber(GetValue(lhs)).
    3.ReturnIfAbrupt(oldValue).
    4.Let newValue be the result of adding the value 1 to oldValue, using the same rules as for the + operator (see 12.7.5).
    5.Let status be PutValue(lhs, newValue).
    6.ReturnIfAbrupt(status).
    7.Return oldValue.
    大致翻译——
    1.令lhs等于当前表达式(++前面的部分)的结果
    2.令oldValue等于lhs转换为数字的结果
    3.使用和“+”运算符一样的规则,令newValue = oldValue + 1
    4.将newValue赋值给lhs
    5.整个运算式返回oldValue
    可以看到,这两者的的区别只是最后一步,整个运算式是返回加一后的还是加一前的。
    对于for语句而言:
    for(var i = 0; i < n; i++)
    最后一栏仅仅是自加,并没有把这个值赋值给谁,所以从这一点来看,++符号放在前面或者是后面都是一样的。
    3.事实上没有太大区别。但是如果要追求那一点点效率问题的话,++i确实会效率高一些.
    确实是从c++的std标准库而来,当i是一个std容器的iterator时,i不是一个数字,i++会多产生一个赋值操作,因此++i性能更高。所以c++习惯的人,在i不是数值时,喜欢用++i来节省开销。
    以上所述是小编给大家介绍的JS for循环中i++ 和 ++i的区别介绍,希望对大家有所帮助
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/20 5:30:04