我想要做的就是传递给函数的变量的名称和该变量的值,并且只在一个变量传递给函数。所以:var x = "anything";function showName() {}showName(x);要么showName("x");它将返回:“ x =任何”。现在,我必须两次指定变量:showName("x", x);为了获得我要传入的变量的名称和值。请注意,我对showName原型中的参数名称不感兴趣,但对调用函数中的变量名称不感兴趣。另外,传递的变量可能是局部变量,因此我不能使用window对象来查找变量。
3 回答
![?](http://img1.sycdn.imooc.com/533e4d660001312002000200-100-100.jpg)
慕妹3146593
TA贡献1820条经验 获得超9个赞
简短的答案是您不能这样做。
更长久的,邪恶的答案是,您可以带有一些真正的讨厌的罐头。而且它仅在从另一个函数调用时才有效。
有两个有趣的属性可以帮助您
arguments.callee呼叫者
让fn做这样的事情:
(function(){
var showMe = function(s){
alert(arguments.callee.caller.toString().match(/showMe\((\S)\)/)[1] +
' = '+ s)
}
x = 1
showMe(x)
})()
arguments.callee.caller.toString()。match(..)[1]的作用是在调用showMe的函数中查找被调用的showMe并打印它及其值。
但这仍然是相当有限的,因为它只会打到showMe(x)的第一个调用。因此,如果有两个调用,它将无法正常工作。
但是,玩这些神秘的东西很有趣。
添加回答
举报
0/150
提交
取消