有没有办法判断函数参数是作为文字还是作为变量传递?

时间:2016-10-06 14:54:17

标签: javascript

我有一个功能:

function hello(param){ console.log('param is '+param); }

两个电话。第一:

hello(123)

第二

var a=123; hello(a);

hello函数中,是否有可能告诉paramvar还是文字值?

注意:我不是试图解决这个问题。当然有很多解决方法,我只是想创建一个漂亮的日志记录功能。并且还想学习JavaScript的界限。我有这个想法,因为在JavaScript中我们有奇怪和意想不到的功能,比如通过调用function.toString获取函数参数名称并解析返回的文本的能力。

1 个答案:

答案 0 :(得分:6)

不,数字这样的原语在Javascript中按值传递。该值将复制到函数中,与原始函数无关。

编辑:如何使用object包装器来实现这样的功能?我不确定你到底想做什么。

你可以定义一个你想要跟踪的包含objects的数组,并检查它是否在那里:

var registry = []  // empty registry
function declareThing(thing){  
   var arg = { value: thing }    // wrap parameter in an object 
   registry.push(arg)    // register object
   return arg;     //return obj
}
function isRegistered(thingObj){  
   return (registry.indexOf(thingObj) > -1)
}

var a = declareThing(123); 
hello(a);

function hello(param){ 
    console.log(isRegistered(param)); 
}