📜  Node.js vm.runInThisContext() 方法

📅  最后修改于: 2022-05-13 01:56:45.610000             🧑  作者: Mango

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