如何在javascript中定义函数内部的函数?

时间:2014-09-15 11:31:02

标签: javascript

我想在Function中声明一个Function。我这样做:

var expr = "'use strict';
console.log('a')";
var f = Function('"use strict";var t = Function('+expr+');');
f();

我收到以下错误:Uncaught SyntaxError:Unexpected token';' 下面是jsbin的链接 我需要能够在Function中创建一个Function函数,而不是嵌套函数或eval。 我注意到,expr变量中的任何内容都被错误地处理了。我的意思是我放在那里的任何代码。所以我不能在内部放置变量。顺便说一句,如果我选择单一陈述,比如

console.log('a');

它工作正常并在控制台中生成预期的a。

我需要使用Function的原因是我想检查严格模式的工作原理。根据ecmascript规范(10.1.1。严格模式代码),如果代码以“use strict”的序言开头或在严格模式内,则代码处于严格模式。所以我想检查函数内部的函数如何在严格的代码中表现。

正如我发现函数内部函数没有相同的严格模式。继承人jsbin 举个例子。变量未声明且很好。尝试添加“use strict”,你会看到一个错误。 有关详细信息,请查看此list

中的最后一点

1 个答案:

答案 0 :(得分:3)

除此之外,应该真正避免这种结构(它很慢,如果你不确定字符串的来源可能会很危险,当然处理引号很痛苦),你有三个问题:

  • 一个糟糕的字符串文字
  • 你不打电话给内功能
  • 您错过了内部函数正文的引号

这是"固定"版本:

var expr = "'use strict';\
console.log('a')";
var f = Function('"use strict";var t = Function("'+expr+'");t();');
f();