Node.js vm.runInThisContext() 方法
vm.runInThisContext() 方法编译代码,在当前全局的上下文中运行它,然后返回输出。此外,运行代码无法访问本地范围,但可以访问当前全局对象。
句法:
vm.runInThisContext( code, options )
参数:此方法接受前面提到的两个参数,如下所述:
- 代码:它是要编译和运行的 JavaScript 代码。
- options:它是一个可选参数,它返回一个Object或字符串 ,如果它是一个字符串,那么它定义了返回字符串的文件名。
返回值:它返回脚本中执行的最后一条语句的结果。
以下示例说明了 Node.js 中vm.runInThisContext() 方法的使用:
示例 1:
// Node.js program to demonstrate the
// runInThisContext() method
// Including vm module
const vm = require('vm');
// Declaring local variable
let localVar = 'GfG';
// Calling runInThisContext method
const vmresult =
vm.runInThisContext('localVar = "Geeks";');
// Prints output for vmresult
console.log(`vmresult: '${vmresult}',
localVar: '${localVar}'`);
// Constructing eval
const evalresult = eval('localVar = "CS";');
// Prints output for evalresult
console.log(`evalresult: '${evalresult}',
localVar: '${localVar}'`);
输出:因此, vm.runInThisContext() 方法无法访问本地范围,因此 localVar 在这里没有变化。
vmresult: 'Geeks',
localVar: 'GfG'
evalresult: 'CS',
localVar: 'GfG'
示例 2:
// Node.js program to demonstrate the
// runInThisContext() method
// Including vm module
const vm = require('vm');
// Declaring local variable and assigning
// it an integer
let localVar = 6;
// Calling runInThisContext method
const vmresult =
vm.runInThisContext('localVar = 9;');
// Prints output for vmresult
console.log(`vmresult: '${vmresult}',
localVar: '${localVar}'`);
// Constructing eval
const evalresult = eval('localVar = 11;');
// Prints output for evalresult
console.log(`evalresult: '${evalresult}',
localVar: '${localVar}'`);
输出:
vmresult: '9',
localVar: '6'
evalresult: '11',
localVar: '6'
参考: https://nodejs.org/api/vm.html#vm_vm_runinthiscontext_code_options