簡體   English   中英

將 JavaScript 字符串轉換為 JavaScript 文字

[英]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`)'
  1. Enter調用命令。
  2. 粘貼你要轉義的Javascript,然后再次Enter
  3. Ctrl+D完成輸入。
  4. 您將在 output 上獲得帶有轉義模板文字的有效eval() function 調用。

您可以將此單行命令分配給別名以便於使用:

 alias js_eval_literal="sed '"'s/`/\\`/g'"' | xargs -0 printf '"'eval(`%s`)'"'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM