是否可以在Javascript中获取上次评估表达式的结果?例如:
var a = 3;
var b = 5;
a * b;
console.log(lastEvaluatedExpression); // should print 15
所以它会像eval()那样返回最后一个已计算的表达式,但我不能使用eval()。
答案 0 :(得分:3)
没有标准的,具体化的概念"最后评估表达式的结果"在JavaScript中。实际上没有太多的语言确实有这样的东西。各种JavaScript REPL可以提供这些行的一些功能,但这些功能特定于那些REPL。没有一般的" JavaScript"方式。
答案 1 :(得分:1)
- package.json -
"dependencies": {
"stream-buffers": "^3.0.1"
},
- main.js -
const streamBuffers = require('stream-buffers');
const repl = require('repl');
const reader = new streamBuffers.ReadableStreamBuffer();
const writer = new streamBuffers.WritableStreamBuffer();
const r = repl.start({
input: reader,
output: writer,
writer: function (output) {
console.log(output)
return output;
}
});
reader.push(`
var a = 3;
var b = 5;
a * b;`);
reader.stop();
- 输出 -
undefined
undefined
15
答案 2 :(得分:0)
这在javascript中是不可能的。我现在能想到的唯一方法(不涉及编写新的翻译)就是使用Coffeescript。 Coffeescript自动返回最后一个表达式。
http://coffeescript.org/extras/coffee-script.js
其中包括Coffeescript.compile
和Coffeescript.eval
等功能。
答案 3 :(得分:-1)
上次评估的表达式没有标准调用。不,你需要存储值。例如,您可以这样做:
var a = 3;
var b = 5;
var c = a * b;
var consoleResult = c.toString();
console.log(consoleResult); // should print 15
//Then make your program logic change the value of consoleResult, as needed.