Javascript函数的所有参数都只按值传递

Are all parameters to Javascript functions passed only by value?

本文关键字:按值传递 参数 函数 Javascript      更新时间:2023-09-26

如果我有一个这样的变量:

我创建了一个类似ENUM的东西,像这样:

 var ContentStatusId = {
        All: 0,
        Production: 1,
        Review: 2,
        Draft: 3,
        Concept: 4
    }

当我像这样调用函数时:

doTask(myParam) {
    var a = 
}

与doTask (ContentStatusId.All);

是否有任何方法,我可以找到任何关于传递给函数的参数,或者它是完全通过值传递?还有其他方法传递参数给函数吗?

在JavaScript中所有参数都是按值传递的。

如果是原始值,则该值为原始值。

function test(arg) {
  console.log(arg);
}
test(1);

arg的值为1。

但是如果你说

test({});

arg将包含一个值,该值是我们刚刚创建的对象的REFERENCE。

编辑地址注释

You can do…

doTask(myParam) {
  if (myParam === ContentStatusId.Review) {
   // Do stuff
  }
}
doTask(ContentStatusId.Review);

doTask(myParam) {
  switch(myParam) {
     case ContentStatusId.Review:
     // Do stuff
     break;
  }
}

javascript中没有通过引用传递的方法

所有东西都只按值传递

如果是原始值

e。g

var a = 10;
console.log(a); // 10
fun xyz(a); // passing a 
function xyz(a) {
    a += 10;
    console.log(a); // 20
} // function will receive the value. If you modify it, It will still will not be reflected back to what you passed
console.log(a); // 10

反过来,

当你把一个对象传递给一个函数时,引用被复制。

e。g

var obj = { 'a': 10 };
console.log(obj.a); // 10
function xyz(obj) {
    obj.a = obj.a + 10;
    console.log(obj.a); // 20
} // here the obj will be copied as reference. So when you modify it, It will get reflected back to original object.
console.log(obj.a); // 20