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