採用する安全なパターンを破壊する際の{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で明確に定義された動作ですか?

はい。それはに依存している一時的なデッドゾーンのconstlet変数。varただし、これらがトランスパイルされている場合は機能しない可能性があります。

これを便利な速記検証として使い始めることが理にかなっているのかどうかを確認しようとしています

いいえ、しないでください。これは本当にあいまいで紛らわしいコードであり、すべてのリンターはuse-before-defineについて文句を言います。特定のエラーメッセージを気にしない場合でも、少なくとも

const {foo = error()} = bar;

error意図を明確にするためのスロー機能を備えています。