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可能,但这是一个有效的问题。帮助别人做他们有报酬做的工作,或者做他们的家庭作业有什么区别?