【个人笔记】js 执行 ++i 和 i++ 区别

54 阅读1分钟

单独使用无区别,作为运算符时参与运算时有区别:

 let a = i++ 先赋值,再自增,a = 自增前结果
 let a = ++i 先自增,再赋值,a = 自增后结果
 i++ 不能作为左值,++i 能作为左值
 效率区别:i++ 是先用临时对象保存原对象,然后原对象自增,再返回临时对象;
         ++i 是直接对原对象自增,返回原对象的引用。由于要生成临时对象;
         i++ 要调用两次拷贝函数和析构函数(将原对象赋给临时对象一次,临时对象以值传递方式返回一次);
         ++i由于不用生成临时变量,且以引用方式返回,故没有构造与析构的开销,效率更高。
         所以在使用类等自定义类型时,尽量使用++i