摘自《javascript王者归来》
javascript的eval函数是一个神奇的东西,它可以将字符串作为脚本来执行,这样为我们设计和实现动态解析器提供了可能。
最简单的解析器是按照Javascript的语法规则原样解释代码。
eval("alert('hello world!');");
然而,除了原样解释代码之外,我们可以通过技巧拼接字符串生成要执行脚本。如:
var name = "akira"; eval("alert('Hello ' + name + '!')");
闭包来实现
var foo = (function(name){return function(){alert("Hello " + name + "!");}})("akira"); foo();采用动态解析器与使用闭包最大不同之处是我们在读取字符串之后到把字符串当作脚本执行前,可以先对字符串进行一些处理,这个能力给了我们扩展javascript本身的力量;function compile(code) { code = code.replace(/@import/s(/w+)/,"$import('$1');"); return eval(code); }