javascript - 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);” 没有在第一个功能中打印?
解决方案
尝试将您的结果 [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());
推荐阅读
- php - 相关模型返回集合时如何访问子相关模型
- pandas - 如何比较两个数据帧以推断第三个数据帧
- angular - 为什么 Angular 会破坏我的 Google 字体 SCSS 导入?
- node.js - 当我试图通过sellerId 获取库存号时,为什么$and 运算符在mongodb mongoose 中不起作用?
- java - Flink Statefun Bootstrap 和状态过期
- python - Django 使用相关模型中的列表注释查询集
- pandas - 不确定如何进一步优化(摆脱 for 循环)
- swift - UITableView 无法将具有标识符的单元格出列
- javascript - Netlify 表单在提交时获取 GET 而不是 POST 请求
- html - 仅在打印/打印预览时出现在表格下方的额外 HTML 表格单元格