採用する安全なパターンを破壊する際の{foo = foo}検証トリックはありますか?
Aug 23 2020
私はここの答えでこのトリックを読みました、それはfoo
このようなプロパティの存在を検証することが可能であるということです:
const {foo = foo} = bar
これは、スローキャッチされないのReferenceErrorは:にアクセスできません「foo」で初期化する前にするときfoo
ですundefined
。
これはJSで明確に定義された動作ですか?これは、最近のすべてのJavaScriptバージョンと環境(ブラウザー、ノード)、およびおそらく将来のもので確実に機能しますか?
より具体的なエラーメッセージが表示されることを気にしない場合は、これを便利な速記検証として使用し始めることが理にかなっているのかどうかを確認しようとしています。ありがとう。
回答
2 Bergi Aug 23 2020 at 19:56
これはJSで明確に定義された動作ですか?
はい。それはに依存している一時的なデッドゾーンのconst
とlet
変数。var
ただし、これらがトランスパイルされている場合は機能しない可能性があります。
これを便利な速記検証として使い始めることが理にかなっているのかどうかを確認しようとしています
いいえ、しないでください。これは本当にあいまいで紛らわしいコードであり、すべてのリンターはuse-before-defineについて文句を言います。特定のエラーメッセージを気にしない場合でも、少なくとも
const {foo = error()} = bar;
error
意図を明確にするためのスロー機能を備えています。