HTML:
<textarea id="ta" cols="20" rows="20">alert("Hello World");</textarea>
<input type="button" value=" Exec " onclick="exec()" />
JS:
function exec()
{
var code=document.getElementById('ta').value;
var fn=new Function(code);
fn();
}
任何人都可以告诉我代码背后的逻辑如何显示"Hello World"
而我正在查看MDN
上面的代码是否使用new alert function
new Function constructor
答案 0 :(得分:4)
Function(string)
返回一个以string
为主体的函数。该代码抓取文本区域中的文本,将其插入到函数体中,然后运行它。在这种情况下,代码是单个命令alert("Hello World");
。
您可以在更简单的示例中尝试:
var t = new Function('alert("hello, world")');
t(); // Alerts "hello, world"
答案 1 :(得分:1)
首先,您需要知道JavaScript是一种解释型语言。这意味着代码将在运行中进行评估和执行。
另一件需要知道的事情是,JavaScript中的所有内容都是一个对象,甚至是函数。所以发生的事情是你用document.getElementById('ta').value
获取文本然后用它来构建一个新函数,称为fn
。然后它就会被执行。
如果你想要真正深入的东西,请寻找类似“javascript执行环境”的东西。