如果我有这样的变量:
我创建了类似于ENUM的东西:
var ContentStatusId = {
All: 0,
Production: 1,
Review: 2,
Draft: 3,
Concept: 4
}
当我调用这样的函数时:
doTask(myParam) {
var a =
}
使用doTask(ContentStatusId.All);
有什么方法可以找到传递给函数的参数,或者只是通过值完全传递?有没有其他方法可以将参数传递给函数?
答案 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;
}
}
答案 1 :(得分:1)
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
其他方式,
将对象传递给函数时,将复制引用。
例如
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