我有一个功能:
function hello(param){ console.log('param is '+param); }
两个电话。第一:
hello(123)
第二
var a=123; hello(a);
在hello
函数中,是否有可能告诉param
是var
还是文字值?
注意:我不是试图解决这个问题。当然有很多解决方法,我只是想创建一个漂亮的日志记录功能。并且还想学习JavaScript的界限。我有这个想法,因为在JavaScript中我们有奇怪和意想不到的功能,比如通过调用function.toString
获取函数参数名称并解析返回的文本的能力。
答案 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));
}