[英]Convert JavaScript string to JavaScript literal
在 Chrome 中,當您右鍵單擊控制台上的字符串時,您會看到“將字符串復制為 javascript 文字”選項。 這就是我現在想要的,在 JavaScript 中。
例如,假設我有以下文本內容:
console.log('hoge');
我的問題是,我怎樣才能從上面得到下面的東西?
"console.log('hoge');"
我想這樣做是因為,我有一個兆字節的 webpack 生成的長 JavaScript 內容,並且出於某種原因我需要在其他環境中eval()
腳本,所以我想復制並粘貼 JavaScript 文字文本在“eval()”中。 (我知道,您可能建議不使用文字而是使用 json (json.stringify/parse) 交換數據,但我現在更喜歡文字方式)
那有可能嗎? 謝謝。
在注意到有關使用eval
固有的安全漏洞的建議后(請參閱: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval )
您可以通過將整個文字代碼包含在反引號中並將結果字符串用作eval
參數來實現您想要的效果。 反引號引號字符串可以包含換行符,因此您應該能夠將整個代碼塊傳遞到一個集合中。
工作片段。
console.log('hoge'); console.log('another hoge'); eval(`console.log('hoge'); console.log('another hoge')`);
您可以輕松地將 Javascript 括在反引號中以獲得模板文字:
eval(`console.log('hoge')`)
但是你也應該在 Javascript 代碼中轉義反引號來處理這樣的情況:
eval(`console.log(`hoge`)`) // SyntaxError
作為一種解決方案,您可以使用這個bash one-liner :
sed 's/`/\\`/g' | xargs -0 printf 'eval(`%s`)'
Enter
調用命令。Enter
。Ctrl+D
完成輸入。eval()
function 調用。您可以將此單行命令分配給別名以便於使用:
alias js_eval_literal="sed '"'s/`/\\`/g'"' | xargs -0 printf '"'eval(`%s`)'"'"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.