Javascript 查找原始值

Javascript 查找原始值,javascript,Javascript,如何创建一个函数,该函数将接收一个参数,并在控制台中打印该参数的基础值,无论它是基元类型还是函数 value = function(args){ return args.valueOf() //Only working for line 36 }; var scary = 'boo'; var first = function() { return 'bar'; }; var second = function() { return first; }; var third

如何创建一个函数,该函数将接收一个参数,并在控制台中打印该参数的基础值,无论它是基元类型还是函数

value = function(args){ 
    return args.valueOf() //Only working for line 36
};

var scary = 'boo';
var first = function() { return 'bar'; };
var second = function() {
    return first;
};

var third = function() {
    return second;
};

var nested = function() {
  return function() {
    return function() {
      return function() {
        return function() {
          return function() {
            return function() {
              return function() {
                return function() {
                  return 'super nested';
                };
              };
            };
          };
        };
      };
    };
  };
};


// expected values for all these assessments
console.log(value(scary));   // should be      'boo'
console.log(value(first));   // should be      'bar'
console.log(value(second));  // should also be 'bar'
console.log(value(third));   // should also be 'bar'
console.log(value(nested));  // should be      'super nested'

我在这里创建的值函数只为我提供了第一行函数,其余的只提供了函数,我如何获得其他函数的值?

您可以检查收到的
args
是否有,如果有,请将
函数与您的参数结果一起重用

如果不是,则返回值

var value=函数(args){
if(args&&args.apply){
返回值(args());
}
返回args;
};
var吓人=‘boo’;
var first=function(){return'bar';};
var second=函数(){
先返回;
};
var第三个=函数(){
返回第二;
};
var嵌套=函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回“超级嵌套”;
};
};
};
};
};
};
};
};
};
//所有这些评估的预期值
console.log(值(可怕));//应该是“boo”
console.log(值(第一个));//应该是“酒吧”
console.log(值(秒));//也应该是“酒吧”
console.log(值(第三个));//也应该是“酒吧”

console.log(值(嵌套));//应该是“超级嵌套的”
尽管已经回答了,另一个解决方案是检查
参数的
类型

var value=函数(args){
if(参数类型==='function'){
返回值(args.call());
}
返回args.valueOf()//仅适用于第36行
};
var吓人=‘boo’;
var first=function(){return'bar';};
var second=函数(){
先返回;
};
var第三个=函数(){
返回第二;
};
var嵌套=函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回函数(){
返回“超级嵌套”;
};
};
};
};
};
};
};
};
};
//所有这些评估的预期值
console.log(值(可怕));//应该是“boo”
console.log(值(第一个));//应该是“酒吧”
console.log(值(秒));//也应该是“酒吧”
console.log(值(第三个));//也应该是“酒吧”

console.log(值(嵌套));//应该是“超级嵌套的”
并不是每个人都喜欢导航到外部代码源(+这个链接很可能在将来某个时候过期),所以您最好将代码作为问题的一部分itself@Icepickle完成:)效果非常好。然而,我仍然会要求OP重新思考他的设计。如果您必须生成这么多嵌套函数,那么您可能做错了。@Ibu我同意:)毫无疑问:)@CarlMarkham可能,但这是一个有效的问题。帮助别人做他们有报酬做的工作,或者做他们的家庭作业有什么区别?