JavaScriptブロック

こんにちは、Habrachitatel!



この遅い時間に、非常に奇妙な考えが頭に浮かびました。 ためらうことなく、私はこれについて短い記事を書くことにしました。

まあ、私はまだWebRTCに関する2番目の記事を書く力と時間はありませんが、ポストノートのために、脳と時間のリソースを見つけることにしました。



思考の本質、さらには質問-誰も(私が会った人)がJavaScriptアプリケーションで(if else式などで使用されるものを除いて)別のコードブロックを使用しないのはなぜですか?



JavaScriptでコードのブロックを作成する方法は?



簡単! 式の先頭にある{}は、オブジェクトではなくブロックと見なされます。 例:

{ console.log('Hello from a block'); }
      
      





ブロックはどのように役立ちますか?



JavaScriptでは、コードのブロックは独自のスコープ(スコープ)を作成しないため、他の何かでユーティリティを探します。

最も基本的なアプリケーションは、コードの論理部分の分離です。 はい、何! ブロックはラベルとともに使用できます。

 MyBlock: { console.log('This is MyBlock'); }
      
      





この状況では、彼女にはほとんど意味がありません。 このような成功を収めると、ラベルをコメントに置き換えることができますが、ラベルがどれだけ美しいかがわかります。

しかし、問題は限定ラベルに残っています。



経験豊富であまりプログラマーではない人は、コードのすべての論理ブロック/部分を別々の関数に入れるべきだと言うことができます。 しかし、私はすぐに反対しようとします。 人生の例を見てみましょうか?

Backboneアプリケーションがあるとします。 各ビューを初期化するとき、標準のアクションを実行する必要があります。グローバルイベントのサブスクライブ、モデルまたはコレクションの変更のサブスクライブなどです。

 Backbone.View.extend({ initialize: function () { this.model.on('change', this.render); this.model.on('add', this.onAdd); this.model.on('change:type', this.onResetType); app.subscribe('reload', this.render, this); app.subscribe('remove', this.remove, this); app.subscribe('vodka', this.drink, this); } });
      
      





何らかの理由で、私はそれを別々の機能にしたくない。 initializeメソッドでは、必要なすべてのイベントへのサブスクリプションをすぐに見ることができるという事実に慣れています。

では、なぜこのコードの塊を、1つのメソッドとスコープのフレームワーク内でコードの論理ブロックに分割しないのですか?

 Backbone.View.extend({ initialize: function () { ModelEvents: { this.model.on('change', this.render); this.model.on('add', this.onAdd); this.model.on('change:type', this.onResetType); } AppEvents: { app.subscribe('reload', this.render, this); app.subscribe('remove', this.remove, this); app.subscribe('vodka', this.drink, this); } } });
      
      







短所



このコード分離の方法の欠点が何であるかさえ知りません。 おそらく、混乱する可能性があります-コードブロックとオブジェクトを混同してください。 しかし、私はそのような傾向はありません。



結論:このようなブロックを使用することは誰にとっても問題です。 コメント、ブロック-好きなように。 しかし、私はまだそのようなブロックの興味深いアプリケーションを見つけたいです。



ご清聴ありがとうございました。



All Articles