节点 VM - Return 隐式对象
Node VM - Return an object implicitly
我正在寻找一种在 Node JS 中执行一些简单脚本的方法并发现了 VM module。文档指定 运行* 方法 return 执行的结果,所以我认为 "Hey, why not just return an object that way and then call on its properties in my main script?"
所以我启动了一个 Node REPL:
$ node
> var vm = require('vm');
undefined
> vm.runInNewContext("{ foo: 'bar' }")
'bar'
> vm.runInNewContext("{ foo: 'bar', baz: 'qux' }")
evalmachine.<anonymous>:1
{ foo: 'bar', baz: 'qux' }
^
SyntaxError: Unexpected token :
>
不完全是预期的结果。有趣的是,如果我 return 赋值的结果...
> vm.runInNewContext("exports = { foo: 'bar', baz: 'qux' }")
{ foo: 'bar', baz: 'qux' }
谁能给我解释一下这种行为?
v8 将大括号解释为包含标签的代码块。将其括在括号中:vm.runInNewContext("({foo: 'bar', baz: 'qux'})")
.
我正在寻找一种在 Node JS 中执行一些简单脚本的方法并发现了 VM module。文档指定 运行* 方法 return 执行的结果,所以我认为 "Hey, why not just return an object that way and then call on its properties in my main script?"
所以我启动了一个 Node REPL:
$ node
> var vm = require('vm');
undefined
> vm.runInNewContext("{ foo: 'bar' }")
'bar'
> vm.runInNewContext("{ foo: 'bar', baz: 'qux' }")
evalmachine.<anonymous>:1
{ foo: 'bar', baz: 'qux' }
^
SyntaxError: Unexpected token :
>
不完全是预期的结果。有趣的是,如果我 return 赋值的结果...
> vm.runInNewContext("exports = { foo: 'bar', baz: 'qux' }")
{ foo: 'bar', baz: 'qux' }
谁能给我解释一下这种行为?
v8 将大括号解释为包含标签的代码块。将其括在括号中:vm.runInNewContext("({foo: 'bar', baz: 'qux'})")
.