1

我知道这是一个有点愚蠢的问题。是否可以在javascript中制作自定义块?这是一个块:

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

这是一个块:

for(;;){
    "block!"
}

可能吗?我从来没有见过任何关于这个主题的东西。这有可能在 es6 中实现吗?

这对回调来说很棒,它可以让你这样做:

foo{
    ...
}

而不是这个:

foo(function(){
    ...
}
4

4 回答 4

0

我想你会喜欢鲁比的。

但是不,在 JavaScript 中没有办法做到这一点,而且我还没有听说过任何类似的 es6 功能。

于 2013-01-22T03:07:45.303 回答
0

您可以使用标签在 JavaScript 中创建块,但它们只有在您想使用它们时才有用,break因为 afaik您不能对它们做任何其他事情并且它们没有自己的范围(除了let)。

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

据我所知,JavaScript只有函数作用域、全局作用域,没有像C那样的块作用域。所以目前你不能这样做。如果你想要一个块,你必须将它包装在一个函数中,你已经列出了。

于 2013-01-22T03:13:09.233 回答
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 回答