javascript - HttpRequest 和嵌套函数中的范围规则
问题描述
JavaScript 新手,不太了解范围规则在我下面的代码中是如何工作的。
我有一个正则表达式,它通过 HTML 正文查找匹配项,将它们放入数组中,然后打印数组。
在'.then'中的那个函数之外,我试图重新打印数组的内容(只是为了了解范围是如何工作的)但没有打印任何内容,因为它认为数组的长度为 0;即使我对数组的声明是主函数方法的一部分。
不太确定这笔交易是什么?可能是根本缺乏理解=]
代码:
function search (url)
{
var method = "GET"
url = "https://www.amazon.ca/gp/product/B07PVNTCN1" // Debug passed URL
console.debug(method + ":" + url)
var imageMatches = ({})
HttpRequest
.get(url)
.timeout(5000)
.then(function(res) {
var myRe = /hiRes\":\"https[^\"]*/g;
imageMatches = res.body.match(myRe)
//Prints Regex matches
for (var i = 0; i < imageMatches.length; i++)
console.log(imageMatches[i].replace("hiRes\":\"", ""))
})
// Below doesn't print anything (length is 0)
for (var j = 0; j < imageMatches.length; j++)
console.log("Outside of Func:" + imageMatches[j])
return imageMatches
}
解决方案
推荐阅读
- java - 从数组返回流作为 int[] 而不是 Integer[]
- node.js - 可以更新 emacs rgrep 命令以在整个 nodejs 项目中排除“node_modules”吗?
- python - colab如何释放内存?
- python - 打印在python中输入数据的日期和时间
- c# - StreamWriter 不会将任何文本写入文件
- java - 如何拥有一个包含 JFrame 的所有 UI 元素的类?
- c++ - 如何在堆栈上为指向对象的指针分配内存?
- ios - 父列表视图和子列表视图之间的 SwiftUI 导航会导致设备上的额外刷新,但不会在模拟器中
- python - 在一个语句中计算多个逻辑运算符“或”、“和”
- html - margin-bottom 适用于 Chrome,但不适用于 Firefox