声明新变量或在函数中使用引用
Declaring new variables or using references in functions?
在为类定义方法时,是自己使用成员更好,还是将它们分配给新变量会更快?想象一下,例如在JavaScript中,以下方法:
square: function() {
var x = this.x;
x *= x;
return x;
}
或
square: function() {
this.x *= this.x;
return this.x;
}
一般来说,速度的差异几乎总是可以忽略不计的,这意味着这是一个过早的优化,应该避免使用任何更易于维护的方法。
但是,在您的特定情况下,两种square
方法之间的功能存在重大差异,如下所示。
var a = {
x: 2,
square: function() {
var x = this.x;
x *= x;
return x;
}
}
console.log('Result of a.square():', a.square()); //Output is 4
console.log('After square, a.x is:', a.x); //Output is 2
var b = {
x: 2,
square: function() {
this.x *= this.x;
return this.x;
}
}
console.log('Result of b.square():', b.square()); //Output is 4
//The difference is here: b.x will be 4 while a.x is still 2
console.log('After square, b.x is:', b.x); //Output is 4
第一种square
方法不会更新this.x
,但第二种方法会更新。使用符合您意图的版本。在消除过早优化后,每种方法的简化版本如下。可维护性的收益是显而易见的。
第一版(不更新this.x
(:
square: function() {
return this.x * this.x;
}
第二版(this.x
更新(:
square: function() {
return this.x *= this.x;
}
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- IIFE中的函数引用不可用
- Wordpress中的Javascript出现匿名函数/引用错误
- 将函数引用存储在散列中在javascript中无法正常工作
- Google可视化addListener调用函数引用错误
- 如何存储包含参数的JS函数引用
- 如何从函数引用元素(从事件侦听器调用)
- 将函数引用传递给嵌套闭包
- Javascript递归函数引用了这一点
- 在Node.js中,从同一文件中的另一个函数引用一个函数会导致'ReferenceError:-函数-未定义
- 为什么将函数引用封装到匿名函数中可以更正'这'指向
- 如何在ES6中使用Arrow函数引用对象内部的其他函数
- 复制不带属性的函数引用
- 在控制器中使用具有函数引用的服务
- Jquery 和闭包或函数引用不起作用
- 将函数引用传递给函数失败
- Jasmine spyOn:当传递间谍函数引用时如何使其工作
- 从 Javascript 中的嵌套函数引用对象成员
- Typescript-不同文件中的模块函数引用-“;找不到符号“;
- 与许多事件侦听器和函数引用一个对象相比,什么是更好的方法