【发布时间】:2014-05-12 05:21:33
【问题描述】:
我遇到了这个奇怪的问题,无法理解函数的作用域在文件中是如何工作的。
例如
function f3() {
}
function f2() {
f3(); // Cannot find variable: f3
}
function f1() {
f3(); // works fine
f2(); // works fine
}
f1();
已编辑
实际代码。
var page = require('webpage').create();
function fPrintObj(obj) {
// Object properties
var output = '';
for (var property in obj) {
output += property + ': ' + obj[property]+'; ';
}
console.log(output);
}
function fGetXpathAd() {
xPathAd = "//div[@class='col-xs-12 col-sm-12 col-md-12 col-lg-12 home-solutions-head']";
console.log(xPathAd);
var adcopy = document.evaluate( xPathAd, document, null, XPathResult.STRING_TYPE, null);
fPrintObj(adcopy); //DOES NOT WORK
return adcopy;
}
function main(status) {
console.log('Evaluating ad-copy.... ');
var a = page.evaluate(fGetXpathAd);
// fPrintObj(a); // WORKS
phantom.exit();
}
// fSetRandomUserAgent();
page.open('https://www.position2.com', main );
错误
ReferenceError: Can't find variable: fPrintObj
phantomjs://webpage.evaluate():6 in fGetXpathAd
phantomjs://webpage.evaluate():8
phantomjs://webpage.evaluate():8
【问题讨论】:
-
我看不到您所说的“找不到变量:f3”错误是如何得到的。我怀疑上面不是导致上述错误的实际代码。
-
您上面的代码在这里工作,jsfiddle.net/X887z/1 .. 我想还有其他问题。如果您发布您的实际代码会更好
-
与您包含的代码完全一样,没有问题。因此,如果您遇到问题,那么您的真实代码并不像您在问题中描述的那么简单。您必须披露更多真正的问题,我们才能提供帮助。
-
可能 f3 在浏览器上下文中,而 f1,f2 在 phantomjs 上下文中。只是一个猜测。请发布一些代码sn-p。
-
我同意这听起来很奇怪。我正在 PhantomJs 上运行完整的代码。
标签: javascript node.js phantomjs