Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么要将回调函数的参数赋给新的局部变量?_Javascript - Fatal编程技术网

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系统中最昂贵的,这使得创建一个新变量看起来像是一个免费的操作。如果这对你有任何帮助,你也可以接受。