2012-09-28 1 views
1

Vous êtes autorisé à utiliser des blocs autoportants comme celui-ci ...Quel est le but des blocs autonomes s'il n'y a pas de portée de bloc?

var something = 1; 
{ 
    var something = 2; 
    print("Inside: " + something); 
} 
print("Outside: " + something); 

Ceci est de: http://eloquentjavascript.net/chapter3.html#p3c7ae609

Mais quel est le point d'avoir des blocs comme ça? A quoi cela sert-il?

+0

Ooops, je continuais à lire, et: _ «En fait, bien que des blocs comme celui-ci sont autorisés, ils sont absolument inutiles. "Devinez je vais voter pour supprimer la question? – wwaawaw

+0

Pourrait aussi bien. Ce n'est pas quelque chose que nous pourrions répondre de toute façon et qui est certainement sous le parapluie «non constructif». – Oded

Répondre

3

En ES6, il y aura des variables scope bloc déclarées avec let, au cours de laquelle des blocs autonomes ne seront pas inutiles plus.

+0

Voir aussi: http://stackoverflow.com/a/12646143/1597180 – wwaawaw

0

Vous avez répondu à votre propre question. De l'article lié dans l'OP:

En fait, bien que des blocs comme celui-ci sont autorisés, ils sont totalement inutile.

3

blocs autoportants ne sont généralement pas ajouter de la valeur dans un script, mais ils peuvent être utilisés pour l'organisation du code, comme le fractionnement sur une équation:

Ligne:
//long equations are hard to read 
foo = bar * baz + fizz - buzz; 
Bloc:
{ 
    //this groups relevant information into a descrete section 
    foo = bar; 
    foo *= baz; 
    foo += fizz; 
    foo -= buzz; 
} 

Bien que, équations longues qui effectuent des opérations s basé sur un ensemble standard d'entrées sont généralement réparti en leur propre fonction:

En fonction:
function qux(bar, baz, fizz, buzz) { 
    var ret; 
    ret = bar; 
    ret *= baz; 
    ret += fizz; 
    ret -= buzz; 
    return ret; 
} 

foo = qux(bar, baz, fizz, buzz); 
+0

Accepté ceci mais vérifiez @ Alnitak aussi bien. – wwaawaw

+1

bizarre, je ne considérerais jamais utiliser un bloc comme vous l'avez fait dans votre exemple parce que les accolades n'ajoutent rien d'utile. Il serait tout aussi bien fait avec quatre lignes séparées avec des espaces (et peut-être un commentaire) le séparant du code précédent. – Alnitak

+0

@Alnitak Oui, c'est logique, même si je n'y avais pas pensé de cette façon. Masturbation visuelle? – wwaawaw