問題タブ [template-literals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - node docs のこの `…${…}…` コードはどういう意味ですか?
Express ライブラリと Node.js を 1 つずつ学習しようとしています。最初に見ているのは、Nodereqiure(moduleName)
関数の詳細です。
これに関するドキュメントを調べたところ、ドキュメントの例に奇妙なコードが見つかりました。
より具体的には、${circle.area(4)}
ビット。
私が理解していることから$
、JavaScript は他の変数と同じです。クライアント側の Web 開発で使用している場合は、ドキュメント関数のデリゲートとして使用されます (と思います)。ノードを使用するときに何に割り当てられますか?
その上で、この構文は何を意味するのでしょうか?${circle.area(4)}
$
ある関数への単なる参照である場合、someFunction()
これと同等ではないでしょうかsomeFunction(){cirle.area(4)}
。それがどのように有効な構文になるかわかりません。
circle.area()
また、とにかく関数を直接直接呼び出さないのはなぜですか?
javascript - テンプレートリテラル補間は空白テーブルを壊します
テンプレート リテラルを使用しているときに、テーブル形式に問題があることに気付きました。
このようなことをするとき:
{bye} の部分は 'Goodbye' から 4 文字短いため、文字列は次のように出力されます。
これは、配列やオブジェクトの補間ではさらに複雑になります。
誰かがこの種の問題に対処する方法を考え出したかどうか疑問に思っています。補間中に文字列の間隔を空けたテーブル形式を維持できる場所。
テンプレートタグが文字列と配列を使用しているとします。配列は単語間のスペースで連結されます。
角かっこ、引用符、ドル記号、中かっこなどは、補間の前に (視覚的に) 文字列の長さにカウントされます。単語間のスペースは、補間後に文字列の長さにカウントされます。インデントは、余分な文字が失われたり、タグ処理中に文字が追加されたりすることによって影響を受けます。
この質問には受け入れられた回答がありますが、もっと議論したいと思います。この問題には複数の答えがある場合があります。
javascript - 文字列リテラルからテンプレート リテラルへ
Javascript 2015 で文字列リテラルをテンプレート リテラルに変換する方法はありますか?
たとえば、次のように の反対のようなものString.raw
です。
そして、それが存在しない場合、なぜでしょうか? すぐに、インジェクション攻撃を防ぐための予防策かもしれないと思いますが...上記が本当に役に立ち、そのようなリスクがない場合は間違いありません
javascript - ES2015 では、タグ付けされたテンプレート リテラルを正しい順序で再構築するにはどうすればよいですか?
テンプレート リテラルに関する MDN ドキュメントの例を使用して、カスタムの「タグ」関数を作成できます。
strings
ここから、 と混合したときに供給されたのと同じ順序でメッセージを構築するにはどうすればよいvalues
でしょうか?
上記のタグ関数は、次のように値/文字列の順序を入れ替えると順序を維持できません。
ドキュメント: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
javascript - ES6 テンプレート リテラルは eval よりも安全ですか?
テンプレート リテラルは、私には eval のような匂いがし、eval を使用するのは悪い考えだとよく言われます。
私はテンプレート リテラルのパフォーマンスには関心がありませんが、インジェクション攻撃 (および私が考えていない可能性のあるその他のセキュリティ上の懸念) については懸念しています。
編集
どの出力
1、2、3
テンプレート リテラルは、グローバル レベルで副作用を起こしています。関数によっても直接的にも。
編集 2
プロンプトが表示されたら入力ii++
すると、ログに記録されます
開始: 1
入力: ii+=1
テンプレートリテラルの後: 1
評価後: 2
編集 3
ECMAScript 仕様の調査を開始しました
- 18.2.1 - グローバル オブジェクトの関数プロパティ :: Eval (x)
- グローバルオブジェクト上にあることに注意してください
- 次のセクションは、eval の「ランタイム セマンティクス」に関するものであることに注意してください。
- 12.2.9 - 一次式 :: テンプレートリテラル
- 表情ですのでご注意ください
- 次のセクションは、TemplateStrings の「静的セマンティクス」に関するものです。
私は詳細を理解していませんが、テンプレートリテラルは eval よりも安全に指定されているように感じます。