如何在函数内的全局上下文中定义javascript中的函数?

时间:2016-09-26 01:05:17

标签: javascript node.js function global-variables global

context = this
function test() {
  (function(cmd) {
    eval(cmd);
  }).call(context, 'function foo(){}');
};

test();
foo(); // => ReferenceError: foo is not defined

如何在函数内定义全局函数? (使用nodeJS)

2 个答案:

答案 0 :(得分:1)

访问全局对象的典型方法是调用一个屈服值,例如:来自逗号运算符。

function a() {
  (0, function () {
    this.foo = function () { console.log("works"); };
  })();
}
a();
foo();

<强>更新 由于strict mode问题,这是另一个版本(参考:(1,eval)('this') vs eval('this') in JavaScript?Cases where 'this' is the global Object in Javascript):

"use strict";
function a() {
  (0, eval)('this').foo = function () { console.log("works"); };
}
a();
foo();

答案 1 :(得分:0)

使用Node.JS中的global对象:

function test() {
  eval('function foo() { return "this is global"; }');
  global.foo = foo;
};

test();

console.log(foo()); // this is global