Javascript 为什么要将回调函数的参数赋给新的局部变量?
将回调函数的参数赋给一个新的局部变量,然后使用它们,这很重要吗?例如:Javascript 为什么要将回调函数的参数赋给新的局部变量?,javascript,Javascript,将回调函数的参数赋给一个新的局部变量,然后使用它们,这很重要吗?例如: $scope.$on('someEvent', function(event) { var _data = event.data; console.log(_data); //method 1 console.log(event.data); // method 2 }); 一些Javascript开发人员更喜欢使用method1。这是因为性能还是什么?我想是缩小了。如果将参数指定给变量,则可以缩小变量,即
$scope.$on('someEvent', function(event) {
var _data = event.data;
console.log(_data); //method 1
console.log(event.data); // method 2
});
一些Javascript开发人员更喜欢使用
method1
。这是因为性能还是什么?我想是缩小了。如果将参数指定给变量,则可以缩小变量,即a
,从而减小代码的大小。只有在多次调用参数时才有用。我认为缩小。如果将参数指定给变量,则可以缩小变量,即a
,从而减小代码的大小。只有在多次调用参数时才有用。在您的示例中,这并不重要,但很有用,因为此对象中的更改将应用于所有使用此对象的函数
function foo (obj)
{
obj.a+=1;
}
var obj = {
a:1
}
foo(obj);
foo(obj);
//obj.a=3;
在您的示例中,这并不重要,但很有用,因为此对象中的更改将应用于使用此对象的所有函数
function foo (obj)
{
obj.a+=1;
}
var obj = {
a:1
}
foo(obj);
foo(obj);
//obj.a=3;
经验法则是在可读性更好的时候做。javascript中没有太多性能问题,除非您处理的代码没有经过优化。最难的部分是可读性 我脑海中出现的一个场景是,如果在某个项上有一个通用回调函数: 第1版:
$myMap.load(function(event) {
setView(event.target.data.initial.x, event.target.data.initial.y);
...
filterLabels(event.target.data.initial.filters);
});
$myMap.load(function(event) {
var savedData = event.target.data.initial;
...
setView(savedData.x, savedData.y);
...
filterLabels(savedData.filters);
});
第2版:
$myMap.load(function(event) {
setView(event.target.data.initial.x, event.target.data.initial.y);
...
filterLabels(event.target.data.initial.filters);
});
$myMap.load(function(event) {
var savedData = event.target.data.initial;
...
setView(savedData.x, savedData.y);
...
filterLabels(savedData.filters);
});
就我个人而言,只要我觉得最终的读者更容易理解正在发生的事情,我就喜欢将参数保存到变量中。我经常使用它是为了可读性,而不是为了性能。经验法则是在可读性更好的时候使用它。javascript中没有太多性能问题,除非您处理的代码没有经过优化。最难的部分是可读性 我脑海中出现的一个场景是,如果在某个项上有一个通用回调函数: 第1版:
$myMap.load(function(event) {
setView(event.target.data.initial.x, event.target.data.initial.y);
...
filterLabels(event.target.data.initial.filters);
});
$myMap.load(function(event) {
var savedData = event.target.data.initial;
...
setView(savedData.x, savedData.y);
...
filterLabels(savedData.filters);
});
第2版:
$myMap.load(function(event) {
setView(event.target.data.initial.x, event.target.data.initial.y);
...
filterLabels(event.target.data.initial.filters);
});
$myMap.load(function(event) {
var savedData = event.target.data.initial;
...
setView(savedData.x, savedData.y);
...
filterLabels(savedData.filters);
});
就我个人而言,只要我觉得最终的读者更容易理解正在发生的事情,我就喜欢将参数保存到变量中。我经常使用它是为了可读性,而不是性能。这只是为了减少编写的代码的大小。如果必须在event.data上写入条件,则必须写入event.data.xxx.length等。。。例如,必须编写前缀(event.data.xxx)很烦人。这只是为了减少编写的代码的大小。如果必须在event.data上写入条件,则必须写入event.data.xxx.length等。。。例如,必须编写前缀(event.data.xxx)是很烦人的。当我们将对象传递给javascript函数时,当我们第一次调用foo函数obj.a=1时,所有更改都将在同一个对象中,而不是在本地;我们加1,然后obj.a=2;当我们第二次调用foo函数时,我们传递的是新对象而不是obj.a=1;我们通过obj.a=2;当我们将对象传递给javascript函数时,当我们第一次调用foo函数obj.a=1时,所有更改都将在同一个对象中,而不是本地;我们加1,然后obj.a=2;当我们第二次调用foo函数时,我们传递的是新对象而不是obj.a=1;我们通过obj.a=2;事实上,与cpu在机器上解释javascript代码以使其与页面交互相比,创建一个新变量并不昂贵。事实上,这个过程可能是大多数web系统中最昂贵的,这使得创建一个新变量看起来像是一个免费的操作。事实上,与cpu在机器上解释javascript代码以使其与页面交互相比,创建一个新变量并不昂贵。事实上,这个过程可能是大多数web系统中最昂贵的,这使得创建一个新变量看起来像是一个免费的操作。如果这对你有任何帮助,你也可以接受。