很多教材都说了, 访问属性速度很慢, 所以如果访问一个属性超过一次, 就该用一个临时变量保存该属性, 以避免多次进行属性查找。但是少有教材提到, 访问外层变量的速度如何。
是因为访问外层作用域的速度衰减可以忽略不计, 以至于即便是访问全局作用域的变量, 也比访问一个当前作用域对象的属性还要快, 所以教材才没有对此进行说明吗?
我个人认为应该不是这样的, 访问外层作用域的变量, 其复杂度也是随着作用域的增加而增加的, 所以其复杂度应该也是O(n), 跟访问对象的属性复杂度应该是相同的才对, 既然提到了要用变量保存对象的属性, 那理应也提一提用变量保存外部变量吧。
除非我的推测是错误的。请教大神讲解一下访问外层变量的详细机制。
专业的回答我没有,但是我开发中会这样处理:
当我有这样的访问时,我就会改成下面的
我并不知道这样能提高效率,我甚至担心会增加内存使用。但这样确实让代码更容易读,更容易改bug
这个处理思路在小学叫提取公因数