首页 > 解决方案 > Javascript:如何打印函数的返回值?

问题描述

我是 Javascript 的初学者,正在阅读“面向 Web 开发人员的 JS”一书的闭包和变量部分。它举了两个例子:

function Func1() {
    var result = new Array();
    for (var i=0; i < 10; i++){
        result[i] = function() {
           console.log('i:'+i);
           return i; 
        };
    }

    return result;
}

console.log(Func1());

function Func2() {
    var result = new Array();

    for(var i=0; i < 10; i++){
        result[i] = function(num) {
            return function() {
                console.log('num:'+num);
                return num;
            };
        }(i);
    }

    return result;
}

console.log(Func2());

在书的描述中,在func1中,每个函数可以返回10,而在func2中,每个函数会返回不同的数字。但是当我运行代码时,它实际上返回:

[ [Function],
  [Function],
  [Function],
  [Function],
  [Function],
  [Function],
  [Function],
  [Function],
  [Function],
  [Function] ]

对于这两个功能。

那么如何打印出每个函数的实际值呢?以及为什么“console.log('i:'+i);” 没有在第一个功能中打印?

标签: javascriptfunctionreturn-value

解决方案


尝试将您的结果 [i] 数据包装到调用的函数中以获取您需要的数据...

检查这个:

function Func1() {
    var result = new Array();
    for (var i=0; i < 10; i++){
        result[i] = (function() {
           console.log('i:'+i);
           return i; 
        })();
    }

    return result;
}

console.log(Func1());

推荐阅读