我有这个功能(教堂数字1 btw):
function num1(c) {
return function(x){
return c(x);
}
}
alert(num1)
按预期行事,并提供与上述完全相同的内容。
alert(num1(num1))
表现出意外并给出:
function (x) {
return c(x);
}
为什么javascript不用函数num1替换'c'?但
alert(num1(num1)(num1))
给出:
function (x) {
return c(x);
}
并且表明第一个c实际上被它应该的功能所取代。 如果'c'没有被替换,那么就会发生这种情况:
(num1(num1)(num1))=
(function (x) {return c(x);}(num1=
c(function num1(c) {
return function(x){
return c(x);
}
})
总而言之,代码正在做它应该做的事情,但它不会输出替换'c'的函数。我能做什么?之后,我会提供更多功能,然后我就不能告诉num1(asd)
和num1(jkl)
,因为'c'不会被替换。
非常感谢你的帮助!
Someonelse
答案 0 :(得分:1)
你为什么不试试这个:
function num1(c) {
function rv(x){
return c(x);
}
rv.showBinding = function() {
return c;
}
return rv;
}
然后:
alert(num1);
alert(num1(num1).showBinding());