2014-07-14 71 views
0

如果我有这样一个变量:JavaScript函数的所有参数是否仅通过值传递?

我创造了这样类似的ENUM的东西:

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

当我打电话这样的功能:

doTask(myParam) { 
    var a = 
} 

随着doTask(ContentStatusId 。所有);

有没有什么办法可以找到有关传递给函数的参数的任何内容,还是仅通过值完全传递?有没有其他方法可以将参数传递给函数?

+0

什么是你想了解吗? –

+0

你到底想要做什么?可能有另一种方法来处理它 - 比如检查类型或其他东西。 –

回答

4

在JavaScript中全部参数按值传递。

在基元的情况下,该值是原始值。

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

arg将有1

值但是,如果你说

test({}); 

然后arg将包含一个值,它是一个参考,我们刚刚创建的对象。

编辑处理意见

你可以做...

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

doTask(ContentStatusId.Review); 

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

我想传递的内容类似于“ContentStatusId,Review:2”,以便我可以查看单词和数字。有没有一种方法可以通过修改存储我像Enums一样使用的变量的方式来实现? – Alan2

1

没有什么通过javascript参考调用通。

一切都通过只有价值

E.g

如果在原始值的情况下

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 
相关问题