問題タブ [ecmascript-6]
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 - ES6モジュールの構文に関するシンタスティックな不満
私は javascript のシンタスティックが大好きですが、新しいES6 モジュール tranpilerを使用しており、シンタスティックはこれらのタイプのステートメントに満足していません。
とにかく、この種の発言についてシンタスティックな沈黙を保つことができるものはありますか?
javascript - CSP セーフな ES6 テンプレート リテラル
スクリプト評価に関する Content-Security-Policy (CSP) 制限に違反することなく、 ES6 テンプレート リテラル(例: )のスタイルでテンプレートを解析するテンプレート エンジンはありますか?"string ${var}"
スクリプト評価に関するCSP の制限により、、、eval
およびが防止new Function
されます。setTimeout(string)
setInterval(string)
John Resig のMicroTemplates、 lodash _.template 、 DoT.jsなど、ES6 スタイルのテンプレート リテラルのようなものを提供または提供するように変更できるテンプレート エンジンが多数あります。ただし、すべてを使用して CSP に違反しているようですnew Function
。
制限のない Javascript を使用できると便利な場合var
もありますが、明らかな理由により、これは不可能な場合があります。ただし、必要に応じて出力をフォーマットするようにエンジンを変更できる必要があります。
この状況では、パフォーマンスは問題ではなく、テンプレートを事前にコンパイルすることはできません。他の人は事前コンパイルについて議論しています。
追加の制限として、コンテンツは HTML ではなくテキストです。結果として、Knockout や PURE などの DOM 指向のテンプレート エンジンが効果的に機能しないとは思いません。
私の最初の考えは、mustache.jsから始めてそこから変更することです (つまりmustache.tags = ['${', '}']
、変更またはDIY ソリューションですが、CSP とテンプレートに関する議論がかなり不足しているように見えるため、このトピックに関する一般的な考えに感謝します。 .
javascript - ES6 の WeakMap を列挙できないのはなぜですか?
JavaScript (および関連) に再参入する前に、私は多くの ActionScript 3 を実行しました。ただし、AS3 バージョンは通常のジェネリック オブジェクトのように列挙可能でしたが、WeakMap には特に.keys()
orがありません.values()
。
AS3 バージョンでは、いくつかの非常に興味深く便利な構造をリグすることができましたが、JS バージョンは多少制限されているように感じます。何故ですか?
Flash VM がそれを実行できるとしたら、ブラウザーが同じことを実行できない理由は何ですか? それがどのように「非決定論的」になるかを読みましたが、それは一種のポイントですよね?
javascript - ECMA-262 ReturnIfAbrupt
最近、ECMAScript 言語仕様を読みました。仕様全体を読むつもりはなかったので、一部だけ抜粋しました。私は多くの質問に出くわしました.そのうちの1つは次のようなものです:
私が理解しているように、それは次のようになるはずです:
ReturnIfAbrupt(len) の意味がわかりませんでしたが、次のことがわかりました。
1.引数が突然の完了の場合、引数を返します。
2.それ以外の場合、argument がCompletion Recordの場合は、 argument を argument.[[value]] とします。
突然の完了とは何ですか?それと完了レコードの違いは?
javascript - isNaN の実装の背後にある理由は何ですか?
関数の名前はisNaN
意味的に value を参照しますisNaN
が、ネイティブ実装はorのようなtrue
一部の非NaN
オブジェクトを返します。undefined
{}
たとえば、アンダースコアの実装ははるかに直感的/論理的だと思います。
ECMA 標準がこのような直感に反する動作を指定したのはなぜですか?
テストする値が
本当にある場合にのみisNaN
返されるように設計し、別の関数で数値への変換可能性をテストする負担を残すように設計しなかったのはなぜですか?true
isNaN
isNumber
このようにすると、数値をテストするときに二重否定がないなど、さらに多くの利点が得られます。
それ以外の
ECMAScript 6 で導入する予定なのでNumber.isNaN()
(期待どおりの動作をします)、このように考える人が増えているようです。
では、なぜ彼らisNaN
はそもそもこのようなデザインをしたのでしょうか? それは単に間違った決定でしたか、それともそうする正当な理由がありましたか?
javascript - JavaScript の「デフォルトのエクスポート」とは何ですか?
ファイル: SafeString.js
今まで見たことがないexport default
。export default
理解しやすい同等のものはありますか?