-1

写了一个函数(arg)

function written(arg)
{
for(var i in arg)
console.log(arg[i]);
}

它通常需要一个字符串,但我想修改它以便它可以将函数作为参数。在那次改变之后,我想这样称呼它

written(function(){return str;}) 

所以我的问题是如何提取argin的值function written,它可以是字符串或返回字符串的函数

4

2 回答 2

0

您可以检查传递的参数是否为函数,如果是则调用它以访问json值

function written(arg){
    if(typeof arg === 'function'){
        arg = arg();
    }
    for(var i in arg){
        console.log(arg[i]);
    }
}

演示:小提琴

于 2013-07-12T11:37:15.810 回答
0

我建议,在检查参数后,递归调用你的函数:

function written(arg){
    if(typeof arg === 'function'){
        return written.apply(this,[arg()]);
    }
    // Actual body of your function
}

以防万一你有更高阶的功能

于 2013-07-12T11:50:51.953 回答