最后在Javascript中评估表达式

时间:2014-05-27 19:21:23

标签: javascript

是否可以在Javascript中获取上次评估表达式的结果?例如:

var a = 3;
var b = 5;
a * b;
console.log(lastEvaluatedExpression); // should print 15

所以它会像eval()那样返回最后一个已计算的表达式,但我不能使用eval()。

4 个答案:

答案 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

请参阅:https://nodejs.org/api/repl.html

答案 2 :(得分:0)

这在javascript中是不可能的。我现在能想到的唯一方法(不涉及编写新的翻译)就是使用Coffeescript。 Coffeescript自动返回最后一个表达式。

http://coffeescript.org/

http://coffeescript.org/extras/coffee-script.js

其中包括Coffeescript.compileCoffeescript.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.