为什么要将回调函数的参数赋值给新的局部变量?

时间:2016-02-21 10:05:44

标签: javascript

重要的是,将回调函数的参数分配给新的局部变量然后使用它们吗?例如:

$scope.$on('someEvent', function(event) { 
  var _data = event.data; 
  console.log(_data); //method 1
  console.log(event.data); // method 2
});

有些Javascript开发人员更喜欢使用method1。那是因为表演还是什么?

3 个答案:

答案 0 :(得分:3)

经验法则是每当它更具可读性时就这样做。除非您处理非优化代码,否则javascript中没有太多性能问题。最难的部分是可读性。

我想到的一个场景是,如果项目上有一个通用的回调函数:

版本1:

$myMap.load(function(event) {
    setView(event.target.data.initial.x, event.target.data.initial.y);
    ...
    filterLabels(event.target.data.initial.filters);
});

版本2:

$myMap.load(function(event) {
    var savedData = event.target.data.initial;
    ...
    setView(savedData.x, savedData.y);
    ...
    filterLabels(savedData.filters);
});

个人而言,一旦我觉得最终的读者更容易理解正在发生的事情,我更愿意将参数保存到变量中。为了便于阅读而不是为了表现,我会更频繁地使用它。

答案 1 :(得分:0)

我觉得缩小了。如果将参数分配给变量,则可以缩小变量,即a,这会减小代码的大小。仅在多次调用参数时才有用。

答案 2 :(得分:0)

在您的示例中并不重要但有用,因为此对象中的更改将应用​​于使用此对象的所有函数。

function foo (obj)
{
obj.a+=1;
} 

var obj = {
a:1
} 
foo(obj);
foo(obj);
//obj.a=3;