3
A
回答
3
這並不意味着在模板字符串的情況下任何特殊。這僅表示數組is frozen。從文檔:
的對象,如果凍結且僅當它是不是extensible,其所有屬性都是不可配置的,並且它的所有數據屬性(即,未存取器與getter或setter屬性特性組件)是不可寫的。
因此,傳遞到標記函數的字符串數組基本上是不可變的。這應該允許引擎將其存儲爲常量,並在每次評估標記的模板文字時重複傳遞相同的數組對象。
3
可以在ECMA腳本中定義自定義模板文字標籤6。例如,
(function(parts, a, b) {
return Object.isFrozen(parts) && Object.isFrozen(parts.raw);
}) `foo${0}bar${0}baz`;
來源:https://kangax.github.io/compat-table/es6/#test-template_literals
在上面的代碼中,功能對象是模板文字的「標籤」。
當字面模板進行評價時,該標記函數被調用與模板字面的所有部分(在這種情況下,它們是foo
,bar
,和baz
)爲一個數組。你看到的測試用例是確保數組對象已經被凍結或不凍結。
測試基本檢查ES6規格的this section,
Perform SetIntegrityLevel(rawObj, "frozen").
...
Perform SetIntegrityLevel(template, "frozen").
0
模板字符串是ECMA6概念,我們可以使用「`」編寫和附加多行代碼,就像之前我們用帶字符串concat的雙引號一樣。
var container = document.getElementById('container');
var todo = {
id: 123,
name: "Pick up dry cleaning",
completed: true
}
container.innerHTML = `
<div todo='$(todo.id)' class="list-group-item">
<i class='${todo.completed}?"hidden":"glyphicon-ok"} text-success glyphicon'></i>
<span class="name">${todo.name}</span>
`
Templates strings are the ECMA6 concepts where we can write and append multiple line code with " ` " as before we use to do with double quotes with string concat.
<div id="container" class="container">
</div>
相關問題
- 1. ES2015模板串安全問題
- 2. 字符串模板
- 3. 字符串中的字符串與模板文字
- 4. django模板中的字符串的子字符串
- 5. Go模板中的切片字符串
- 6. Django模板中的字符串操作
- 7. Antlr字符串模板中的條件
- 8. MediaWiki模板中的字符串函數?
- 9. 評估字符串模板
- 10. 模板輸入字符串
- 11. ES6字符串模板
- 12. 分隔字符串模板
- 13. 在Swift中創建字符串模板?
- 14. 在模板中轉換Django字符串
- 15. Python中的字符串模板:什麼是合法字符?
- 16. 字符串替換角模板邏輯中的多個字符
- 17. 帶有模板字符串的Javascript URL
- 18. 獲取Ruby模板的字符串?
- 19. 文本模板的字符串填充
- 20. 模板字符串Python 2.5的錯誤
- 21. Jinja2的模板 - 比較字符串
- 22. 高級字符串格式vs模板字符串
- 23. django模板,查找字符串替換爲其他字符串
- 24. 模板參數類型爲字符串
- 25. 從字符串快速渲染模板
- 26. Django模板 - 格式化字符串
- 27. 轉換日期爲字符串模板
- 28. Smarty模板PHP - 從字符串
- 29. 模板ruby字符串評估錯誤?
- 30. 字符串「排序模板」,在C#
值得一提的凍結的對象是什麼 - 凍結的對象是一個對象,其屬性不能被修改。您可以使用Object.freeze創建自己的凍結對象,並檢查對象是否通過Object.isFrozen凍結。請注意,「解凍」物體是不可能的。您可以在控制檯中查看它:'Object.isFrozen(Object.freeze({}))'。 –
因此,您的答案頂部的函數表達式旨在表示隱藏的函數表達式在幕後與每個模板文字相關聯? – Ben
@BenAston不是每個文字,只是這個模板文字。如果你想和其他文字一起使用,你可以像這樣做'const fn = ...;'然後「fn'foo $ {0}'」 – thefourtheye