1

私はこれが少しばかげた質問であることを知っています. JavaScriptでカスタムブロックを作成することは可能ですか? これはブロックです:

if(a==2){
    "block!"
}

これはブロックです:

for(;;){
    "block!"
}

出来ますか?私はこの件について何も見たことがありません。これがes6で実装される可能性はありますか?

コールバックに最適です。これにより、次のことが可能になります。

foo{
    ...
}

これの代わりに:

foo(function(){
    ...
}
4

4 に答える 4

0

try/catch を使用して、変数に対して独自のスコープを持つブロックを提供するこのトリックを見てきました。

try {
  throw 0;
} catch(variable) {
  //variable only exists in this block
  variable = 'my value';
  console.log(variable);
  //i can return from parent function here
}
//variable does not exist outside of the block
console.log(typeof variable);

try/catch の使用にはパフォーマンス上の考慮事項がありますが、ブロックが関数またはループ内にある場合returnでも使用できるため、便利です。break

于 2013-01-22T04:36:52.460 に答える
0

私が知っているように、JavaScript には関数スコープ、グローバル スコープしかなく、C のようなブロック スコープはありません。したがって、現在これを行うことはできません。関数でラップする必要があるブロックが必要な場合は、既にリストされています。

于 2013-01-22T03:13:09.233 に答える
0

ルビーがいいと思います。

しかし、いいえ、JavaScript でこれを行う方法はありません。同様の es6 機能について聞いたことがありません。

于 2013-01-22T03:07:45.303 に答える
0

ラベルを使用して JavaScript でブロックを作成できますが、ラベルを使用しbreak他に何もできず、独自のスコープを持っていない ( let.

foo: {
   // this is a block
   console.log(1);
   break foo;
   console.log(2); // never logged
}
于 2013-01-22T03:09:24.257 に答える