sag*_*e88 2 javascript firebug command-line eval
作为家庭作业的一部分,我试图在浏览器环境中实现一个类似于 Firebug 中可用的 JavaScript 控制台。从我收集到的情况来看,eval()这似乎是最简单的方法。然而,即使是非常基本的用户输入,我的代码也会遇到一些问题。例如:
var number = 5;\nRun Code Online (Sandbox Code Playgroud)\n\n导致语法错误而不仅仅是评估undefined像 Firebug 中那样进行评估。因此,我似乎根本无法在 eval 字符串内声明变量。如果我做一些更简单的事情,例如:
3 + 4 * Math.PI\nRun Code Online (Sandbox Code Playgroud)\n\n它工作正常。我试图找到一个有人使用的例子eval()在包含变量声明的字符串上使用的示例,但我似乎找不到任何人这样做。
在将用户输入编译成新字符串之前,我是否需要使用正则表达式完全解析用户输入eval()?
能把eval()分号理解为换行符吗?我也找不到使用这些的人。
function runMiniFirebug() {\n var userInput = document.getElementById("user-input").value;\n try {\n var userOutput = eval(\'(\' + userInput + \')\');\n document.getElementById("js-output").innerHTML += \'<p class="input">>>>\' + userInput + \'<p>\';\n document.getElementById("js-output").innerHTML += \'<p class="ouput">\' + userOutput + \'<p>\';\n }\n catch(error) {\n document.getElementById("js-output").innerHTML += \'<p class="input">>>>\' + userInput + \'<p>\';\n document.getElementById("js-output").innerHTML += \'<p class="error">\' + error.message + \'<p>\';\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:\n所以看来添加的括号导致了错误。这是我的讲师幻灯片中的一部分。该信息是否不正确,或者我只是错误地解释了它?
\n\n\n\n用 { ... } 分隔的字符串
\n\n\xe2\x80\x93 您必须添加额外的括号,以便 JavaScript 知道 \n 大括号用于对象文字,而不是用于分隔语句。
\n\n\xe2\x80\xa2 这样做没什么坏处,所以定期添加括号
\n\n\xe2\x80\x93 var test2 = "{ 名字:\'杰伊\', 姓氏:\'萨恩\' }";
\n\n\xe2\x80\x93 var person = eval("(" + test2 + ")");
\n
var userOutput = eval('(' + userInput + ')');
Run Code Online (Sandbox Code Playgroud)
为什么要用括号括起来?这将创建语句
(var number = 5;)
Run Code Online (Sandbox Code Playgroud)
这是无效的语法。
只需删除'(' +和+ ')'。
至于您的编辑,这是指仅评估单个表达式。var number = 5;不是一个表达式,也不是alert(1 + 1); alert(2 + 2);。将其中任何一个括在括号中都会导致错误。
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |