我在Node.js中爲多種語言創建了一個非常原始的在線解釋器/編譯器,只是爲了體驗,而且我運行JS時遇到了一個非常奇怪的問題碼。在Eval()中創建完美的JavaScript語法錯誤()
當用戶發佈信息時,我會接受他們的輸入,稍微轉義一下,然後直接將其輸入到命令行中(可怕的做法,我知道,但以後我會轉移到新系統,而不涉及直接CMD)這個轉義雙引號和\ n,\ r等
當得到輸入,我child_process.exec
它與命令(是的,我給它一個回調,但它是一個相當長的,我不'牛逼覺得有必要寫)
let parentResults = cp.exec(`node ./builders/${this.builder}.js "${this.escapedCode}"`);
// First parameter represents the builder to run the user input with
// and escaped code is self-explanatory
,處理JS只有一條線的建設者:
eval(process.argv[2]); // Already somewhat-escaped code
現在,當我寫類似
function foo(x) {
console.log(x);
}
foo(5);
我得到的5
控制檯正確的輸出。
但是,當我這樣做
let foo = function(x) {
console.log(x);
}
foo(5);
我得到一個錯誤說
console.log(x);
^
SyntaxError: Unexpected identifier
當我用箭頭語法以及同樣的事情發生。我不知道會發生什麼事情。任何想法或幫助?
被選爲最佳答案,因爲我覺得您的回答給出了在Stuart編輯之前代碼失敗的更好解釋。 –