函数没有闭包,你评估。你可以在这里读到一些关于它的东西:http://phantomjs.org/api/webpage/method/evaluate.html
这就是变量 name1、name2 和 name3 在您评估函数时未定义的原因。
Phantom 2 在当前版本中存在以下错误 - evaluate 函数中的错误不会出现异常。在这种情况下,evaluate 只返回 null。
因此,您在 evaluate 函数中遇到了一个错误,但一无所获。
你可以试试下面的例子,它会打印出来
jsonStr: {"name1":1,"name2":2,"name3":3}
var casper = require('casper').create();
var fs = require('fs');
casper.start('http://casperjs.org/', function() {});
casper.then(function() {
var jsonStr = this.evaluate(function() {
var outJson = {'name1': 1, 'name2': 2, 'name3': 3};
return JSON.stringify(outJson);
});
this.echo('jsonStr: ' + jsonStr);
fs.write('myFile.json', jsonStr, 'w');
});
casper.run();
和下面的例子,它打印
jsonStr: null
var casper = require('casper').create();
casper.start('http://casperjs.org/', function() {});
casper.then(function() {
var jsonStr = this.evaluate(function() {
var outJson = {'name1': name1, 'name2': name2, 'name3': name3};
return JSON.stringify(outJson);
});
this.echo('jsonStr: ' + jsonStr);
});
casper.run();