[英]User input JavaScript eval with variable declarations
作為家庭作業的一部分,我試圖實現一個JavaScript控制台,該控制台類似於瀏覽器環境中Firebug中可用的控制台。 根據我的選擇, 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 +“)”);
var userOutput = eval('(' + userInput + ')');
為什么用括號括起來? 這將創建語句
(var number = 5;)
這是無效的語法。
只需刪除'(' +
和+ ')'
。
至於您的編輯,那是指僅對單個表達式求值 。 var number = 5;
不是表達式,也不是alert(1 + 1); alert(2 + 2);
alert(1 + 1); alert(2 + 2);
。 用括號括起來會導致錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.