Est-il acceptable d'utiliser avec ()?

Une fois, j'ai vu un exemple comme celui-ci:

var a, x, y; var r = 10; with (Math) { a = PI * r * r; x = r * cos(PI); y = r * sin(PI / 2); } 

Et cela semble très pratique, car je ne dois pas taper toutes les Math. S.

Mais quand je regarde le MDN , il dit:

L'utilisation with n'est pas recommandée et est interdite dans le mode strict ECMAScript 5 . L'alternative recommandée est d'attribuer l'objet aux propriétés auxquelles vous souhaitez accéder à une variable temporaire.

Alors, est-il acceptable d'utiliser with() ? En HTML5 ?

Le MDN que vous avez lié indique Using with is not recommended
with une excellente façon de faire le code spaghetti pour le déjeuner.

Vous pourriez l'aimer, mais le gars qui devra le débaucher vous maudira.

javascript a quelques opérateurs très étranges, comme l'opérateur de virgule ( , ).
Pouvez-vous comprendre ce que fait le code suivant?

 var a = "a"; var b = "b"; a = [b][b = a,0]; 

Eh bien, il échangé a et b … Vous ne comprenez pas , sorte que le gars qui aura besoin de maintenir votre code. N'utilisez pas de hacks, les hacks sont cool dans les jeux de charades, pas dans le code réel.


Quand l'opérateur est-il utile?
L'échange de virgules Fiddle

Il est judicieux d'utiliser n'importe quelle fonctionnalité de JavaScript, pour autant que vous le compreniez .

Par exemple, l'utilisation with vous peut accéder aux propriétés existantes d'un objet, mais vous ne pouvez en créer aucun .

Observer:

 var obj = {a:1,b:2}; with(obj) { a = 3; c = 5; } // obj is now {a:3,b:2}, and there is a global variable c with the value 5 

Il peut être utile de raccourcir le code, par exemple:

 with(elem.parentNode.children[elem.parentNode.children.length-3].lastChild.style) { backgroundColor = "red"; color = "white"; fontWeight = "bold"; } 

Étant donné que les propriétés de l'objet style existent déjà.

J'espère que cette explication est assez claire.

Dans son excellent livre "Javascript: The Good Parts", Douglas Crockford énumère le "avec Statement" à l'Annexe B: The Bad Parts.

Il dit: "Malheureusement, ses résultats peuvent parfois être imprévisibles, donc il faut éviter".

Il poursuit en donnant un exemple, où une affectation à l'intérieur de la fonction fonctionnera sur différentes variables selon que l'objet est défini ou non.

Voir avec une déclaration considérée comme dangereuse (mais moins détaillée que l'explication dans le livre).