【发布时间】:2014-03-05 03:26:39
【问题描述】:
作为作业的一部分,我正在尝试在浏览器环境中实现一个类似于 Firebug 中可用的 JavaScript 控制台。据我所知,eval() 似乎是最简单的方法。但是,即使是非常基本的用户输入,我的代码也会遇到一些问题。例如:
var number = 5;
导致语法错误,而不是像在 Firebug 中那样只计算 undefined。因此,我似乎根本无法在 eval 字符串中声明变量。如果我做一些更简单的事情,比如:
3 + 4 * Math.PI
它工作正常。我试图找到一个在包含变量声明的字符串上使用eval() 的示例,但我似乎找不到任何这样做的人。
在将用户输入编译为eval() 的新字符串之前,是否需要完全解析用户输入?
eval() 可以将分号理解为换行符吗?我也找不到使用这些的人。
function runMiniFirebug() {
var userInput = document.getElementById("user-input").value;
try {
var userOutput = eval('(' + userInput + ')');
document.getElementById("js-output").innerHTML += '<p class="input">>>>' + userInput + '<p>';
document.getElementById("js-output").innerHTML += '<p class="ouput">' + userOutput + '<p>';
}
catch(error) {
document.getElementById("js-output").innerHTML += '<p class="input">>>>' + userInput + '<p>';
document.getElementById("js-output").innerHTML += '<p class="error">' + error.message + '<p>';
}
}
编辑: 所以似乎添加的括号导致了错误。这是我的讲师幻灯片中的一部分。信息不正确,还是我只是解释错误?
用 { ... } 分隔的字符串
– 您必须添加额外的括号,以便 JavaScript 知道 大括号用于对象文字,而不是用于分隔语句。
• 这样做永远不会有坏处,因此请定期添加括号
– var test2 = "{ firstName: 'Jay', lastName: 'Sahn' }";
– var person = eval("(" + test2 + ")");
【问题讨论】:
标签: javascript command-line firebug eval