>Con: 'with' makes it hard for a human reader or JavaScript compiler to >decide whether an unqualified name will be found along the scope >chain, and if so, in which object. So given this example: >function f(x, o) { > with (o) > print(x); >}
Dans la fonction ci-dessus, quand f() est appelée, si x n'est pas défini dans l'objet o, on n'aura pas d'erreurs mais des résultats inattendus (le x de la fonction sera pris et non le x de o).
Ouais mais là qd même il faut être un peu bablé pour inventer un sac de nœuds pareil !
Le gonze qu'a pondu ça ne s'est pas rendu compte qu'il utilisait des noms communs à plusieurs variable/propriété/koikonveut ? !
-- Stéphane Moriaux avec/with iMac-intel
Le 12/04/12 08:06, Clément a écrit :
>Con: 'with' makes it hard for a human reader or JavaScript compiler to
>decide whether an unqualified name will be found along the scope
>chain, and if so, in which object. So given this example:
>function f(x, o) {
> with (o)
> print(x);
>}
Dans la fonction ci-dessus, quand f() est appelée,
si x n'est pas défini dans l'objet o, on n'aura pas d'erreurs mais des
résultats inattendus (le x de la fonction sera pris et non le x de o).
Ouais mais là qd même il faut être un peu bablé pour inventer un sac de
nœuds pareil !
Le gonze qu'a pondu ça ne s'est pas rendu compte qu'il utilisait des
noms communs à plusieurs variable/propriété/koikonveut ? !
>Con: 'with' makes it hard for a human reader or JavaScript compiler to >decide whether an unqualified name will be found along the scope >chain, and if so, in which object. So given this example: >function f(x, o) { > with (o) > print(x); >}
Dans la fonction ci-dessus, quand f() est appelée, si x n'est pas défini dans l'objet o, on n'aura pas d'erreurs mais des résultats inattendus (le x de la fonction sera pris et non le x de o).
Ouais mais là qd même il faut être un peu bablé pour inventer un sac de nœuds pareil !
Le gonze qu'a pondu ça ne s'est pas rendu compte qu'il utilisait des noms communs à plusieurs variable/propriété/koikonveut ? !
-- Stéphane Moriaux avec/with iMac-intel
Olivier Masson
Le 12/04/2012 08:06, Clément a écrit :
Le 11/04/2012 10:43, Olivier Masson a écrit :
Je pense qu'il est quand important de savoir de quoi on parle :) Pour exemple, je n'ai pas vraiment compris le "contre" de with dans le lien donné par SAM <https://developer.mozilla.org/en/JavaScript/Reference/Statements/with>
Prenons la page et traduisons :)
Merci à Paul également pour sa réponse.
>Using with is not recommended, and is forbidden in ECMAScript 5 strict >mode. The recommended alternative is to assign the object whose >properties you want to access to a temporary variable. >(On a historical note, Firefox 1.5 used to generate a warning when the >'with' statement was used: "deprecated with statement usage". This has >been removed in Firefox 1.5.0.1 ( bug 322430 ).)
Bon, déjà, "with" est interdit en ES5 en mode strict. Je ne traduirais pas la page du mode strict mais en gros, c'est un mode plus "strict" (sérieux ? :)) et il faut écrire "use strict"; dans votre code pour qu'il soit mis en place. Autant dire que ça ne se voit pas souvent, mais c'est à noter. Les utilisateurs de FF 1.5 avaient un warning dans leur console leur disant que l'utilisation de with était dépréciée. Bel essai de Mozilla d'empêcher une commande qu'il n'aime pas trop ;-) ça a été retiré depuis (malheureusement)
Donc déjà, si comme parfois j'avais passé le code dans JSlint, je me serai pris un gros vent. Le problème, c'est que JSlint, même en enlevant la plupart des warnings il déclenche sur TOUT. Je n'ai jamais vu un code qui sorte indemne. De ce fait, cela rend inutilisable son rapport.
Personnellement, je ne trouve pas que le gain d'écriture de with soit suffisant par rapport à une variable temporaire pour justifier une baisse des performances (même minime)
Oui, j'ai bien compris que c'était tout pourri :) Merci pour tes traductions.
Le 12/04/2012 08:06, Clément a écrit :
Le 11/04/2012 10:43, Olivier Masson a écrit :
Je pense qu'il est quand important de savoir de quoi on parle :) Pour
exemple, je n'ai pas vraiment compris le "contre" de with dans le lien
donné par SAM
<https://developer.mozilla.org/en/JavaScript/Reference/Statements/with>
Prenons la page et traduisons :)
Merci à Paul également pour sa réponse.
>Using with is not recommended, and is forbidden in ECMAScript 5 strict
>mode. The recommended alternative is to assign the object whose
>properties you want to access to a temporary variable.
>(On a historical note, Firefox 1.5 used to generate a warning when the
>'with' statement was used: "deprecated with statement usage". This has
>been removed in Firefox 1.5.0.1 ( bug 322430 ).)
Bon, déjà, "with" est interdit en ES5 en mode strict. Je ne traduirais
pas la page du mode strict mais en gros, c'est un mode plus "strict"
(sérieux ? :)) et il faut écrire "use strict"; dans votre code pour
qu'il soit mis en place. Autant dire que ça ne se voit pas souvent, mais
c'est à noter.
Les utilisateurs de FF 1.5 avaient un warning dans leur console leur
disant que l'utilisation de with était dépréciée. Bel essai de Mozilla
d'empêcher une commande qu'il n'aime pas trop ;-) ça a été retiré depuis
(malheureusement)
Donc déjà, si comme parfois j'avais passé le code dans JSlint, je me
serai pris un gros vent.
Le problème, c'est que JSlint, même en enlevant la plupart des warnings
il déclenche sur TOUT. Je n'ai jamais vu un code qui sorte indemne. De
ce fait, cela rend inutilisable son rapport.
Personnellement, je ne trouve pas que le gain d'écriture de with soit
suffisant par rapport à une variable temporaire pour justifier une
baisse des performances (même minime)
Oui, j'ai bien compris que c'était tout pourri :)
Merci pour tes traductions.
Je pense qu'il est quand important de savoir de quoi on parle :) Pour exemple, je n'ai pas vraiment compris le "contre" de with dans le lien donné par SAM <https://developer.mozilla.org/en/JavaScript/Reference/Statements/with>
Prenons la page et traduisons :)
Merci à Paul également pour sa réponse.
>Using with is not recommended, and is forbidden in ECMAScript 5 strict >mode. The recommended alternative is to assign the object whose >properties you want to access to a temporary variable. >(On a historical note, Firefox 1.5 used to generate a warning when the >'with' statement was used: "deprecated with statement usage". This has >been removed in Firefox 1.5.0.1 ( bug 322430 ).)
Bon, déjà, "with" est interdit en ES5 en mode strict. Je ne traduirais pas la page du mode strict mais en gros, c'est un mode plus "strict" (sérieux ? :)) et il faut écrire "use strict"; dans votre code pour qu'il soit mis en place. Autant dire que ça ne se voit pas souvent, mais c'est à noter. Les utilisateurs de FF 1.5 avaient un warning dans leur console leur disant que l'utilisation de with était dépréciée. Bel essai de Mozilla d'empêcher une commande qu'il n'aime pas trop ;-) ça a été retiré depuis (malheureusement)
Donc déjà, si comme parfois j'avais passé le code dans JSlint, je me serai pris un gros vent. Le problème, c'est que JSlint, même en enlevant la plupart des warnings il déclenche sur TOUT. Je n'ai jamais vu un code qui sorte indemne. De ce fait, cela rend inutilisable son rapport.
Personnellement, je ne trouve pas que le gain d'écriture de with soit suffisant par rapport à une variable temporaire pour justifier une baisse des performances (même minime)
Oui, j'ai bien compris que c'était tout pourri :) Merci pour tes traductions.