【发布时间】:2014-09-29 07:01:25
【问题描述】:
我对下面的代码有几个问题:
我在第 11 行定义了一个名为 iMax 的全局变量。但是,如果我尝试在第 17 行调用它,它将不起作用。为什么?[已回答]
由于节点模块 'cheerio' 和 'request',此脚本无法在 Web 浏览器中运行,但它可以在本地命令提示符下运行。有什么办法可以让另一个 确实 在网页中运行的 javascript 与共享变量并执行此 javascript 以在网页外(本地)运行?这两个 javascript 将位于同一目录中。 [未答复]
当我删除 'urls = [];'从第 3 行开始,奇怪的是,我收到一条错误消息:
request('http://forum.blockland.us/index.php?action=profile;u=137487;sa=showPosts'
SyntaxError:意外的令牌 (
这对我来说毫无意义,因为 'urls = [];'在代码中没有目的。任何想法为什么会发生这种情况? [已回答]
-
1 var request = require('request'),
2 cheerio = require('cheerio'),
3 urls = [];
4
5
6 request('http://forum.blockland.us/index.php?action=profile;u=137487;sa=showPosts', function(err, resp, body){
7 if(!err && resp.statusCode == 200){
8 var $ = cheerio.load(body);
9 $('b:contains(...)', 'tr.catbg3').each(function(){
10 totalPages = $(this).next().text();
11 iMax = (totalPages - 1) * 15;
12 });
13 }
14 });
15
16
17 for(i = 0; i <= iMax; i += 15)
18 {
19 console.log(i);
20 }
【问题讨论】:
-
异步 JavaScript 不会有问题吗?
-
虽然声明的变量是在执行任何代码之前创建的,但隐式全局变量在创建它们的表达式执行之前不存在。所以 iMax 在请求返回之前不会创建,但是您会在调用 request 后立即尝试访问它。
-
请在每个帖子中坚持一个问题。这个问题的答案变得一团糟。
-
是的,我明白你的意思(我最初打算为每个问题设置数字以便更有条理)。这是我在这个论坛上发布的第一个问题,所以我还不知道绳索。我来自一个论坛,即使是重复发帖也不受欢迎。
标签: javascript node.js global-variables