Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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_Arrays_Reference - Fatal编程技术网

Javascript 在多个函数中修改数组是一种糟糕的做法吗?

Javascript 在多个函数中修改数组是一种糟糕的做法吗?,javascript,arrays,reference,Javascript,Arrays,Reference,我有一个数组,它在我的应用程序顶部声明: var arr = [1,2,3,4] 我有两个方法在后台运行 方法1 Array.prototype.numberOfCoolElements = function(){ doSomethings(); doOtherThings(); // meantime, the method2 will be called return this.length; } 方法2

我有一个数组,它在我的应用程序顶部声明:

var arr = [1,2,3,4]
我有两个方法在后台运行

方法1

Array.prototype.numberOfCoolElements = function(){
          doSomethings();
          doOtherThings();

          // meantime, the method2 will be called

          return this.length;
}
方法2

Array.prototype.changeTheLength = function(){
          this[100] = 123;
}
如果我在具有相同数组引用的两个异步函数上运行这两个方法:


调用
numberOfCooleElements
后,函数的长度是否可能在完成之前更改?

否这是不可能的,因为JavaScript已经运行到完成语义。更多信息请点击此处:

相关报价:

在对程序进行推理时,这提供了一些很好的属性,包括这样一个事实:每当函数运行时,它都不能被抢占,并且将在任何其他代码运行之前完全运行(并且可以修改函数操作的数据)


不,这是不可能的,因为JavaScript已经运行到完成语义。更多信息请点击此处:

相关报价:

在对程序进行推理时,这提供了一些很好的属性,包括这样一个事实:每当函数运行时,它都不能被抢占,并且将在任何其他代码运行之前完全运行(并且可以修改函数操作的数据)


不,javascript是单线程的。这取决于在修改数组之前先完成哪个异步操作。如果我在两个异步函数中“同时”运行这两个函数,则changeLength可能在NumberOfCoolements返回之前完成?@AfonsoMatos否,javascript中只有一个正在执行的游标。它将调用一个方法,然后调用另一个方法。首先调用哪一个取决于其他事情。不,它不可能发生,但是您可能不想考虑将相同的数组引用传递给两个使其发生变异的函数。尝试改用纯函数:-)不,javascript是单线程的。这取决于在修改数组之前先完成哪个异步操作。如果我在两个异步函数中“同时”运行这两个函数,则changeLength可能在NumberOfCoolements返回之前完成?@AfonsoMatos No,Javascript中只有一个正在执行的游标。它将调用一个方法,然后调用另一个方法。首先调用哪一个取决于其他事情。不,它不可能发生,但是您可能不想考虑将相同的数组引用传递给两个使其发生变异的函数。尝试改用纯函数:-)