Non, même ici et dans cette forme, aucun intérêt, sauf la force de l'habitude. (visuellement ça vient à me manquer parfois)
Désolé Stéphane mais tu as tort sur ce point.
Non, non, je n'ai pas tort, l'habitude de voir des ; trouble bien ma comprenette en leur absence. :-)
Le point virgule à la fin d'une ligne d'assignation est *obligatoire*
var machin = function() {}; // ; obligatoire function machin() {} // ; inutile
OK, OK, j'avais noté sur l'autre post (je n'emploie jamais var truc = function ...)
Mais z'alors : for(var i in T) T[i].onclick = function() { alert('truc') }
n'est pas correct du tout, du tout ? !
Si j'ai bien compris, le navigateur va se le re-écrire en : for(var i in T) T[i].onclick = function() { alert('truc'); }; et même : for(var i in T) { T[i].onclick = function() { alert('truc'); }; } î___ et là, il en faut aussi ?
http://www.ecma-international.org/publications/standards/Ecma-262.htm chapitre 7.9 toujours
OK,bis C'est terrible alors que les ouvrages de vulgarisation nous enduisent d'erreurs (le ; facultatif je ne l'ai pas inventé)
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé
var machin = function(bidule) {}
Non, même ici et dans cette forme, aucun intérêt, sauf la force de
l'habitude.
(visuellement ça vient à me manquer parfois)
Désolé Stéphane mais tu as tort sur ce point.
Non, non, je n'ai pas tort, l'habitude de voir des ;
trouble bien ma comprenette en leur absence. :-)
Le point virgule à la fin d'une ligne d'assignation est *obligatoire*
var machin = function() {}; // ; obligatoire
function machin() {} // ; inutile
OK, OK, j'avais noté sur l'autre post
(je n'emploie jamais var truc = function ...)
Mais z'alors :
for(var i in T)
T[i].onclick = function() { alert('truc') }
n'est pas correct du tout, du tout ? !
Si j'ai bien compris, le navigateur va se le re-écrire en :
for(var i in T)
T[i].onclick = function() { alert('truc'); };
et même :
for(var i in T)
{
T[i].onclick = function() { alert('truc'); };
}
î___ et là, il en faut aussi ?
http://www.ecma-international.org/publications/standards/Ecma-262.htm
chapitre 7.9 toujours
OK,bis
C'est terrible alors que les ouvrages de vulgarisation nous enduisent
d'erreurs (le ; facultatif je ne l'ai pas inventé)
--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Non, même ici et dans cette forme, aucun intérêt, sauf la force de l'habitude. (visuellement ça vient à me manquer parfois)
Désolé Stéphane mais tu as tort sur ce point.
Non, non, je n'ai pas tort, l'habitude de voir des ; trouble bien ma comprenette en leur absence. :-)
Le point virgule à la fin d'une ligne d'assignation est *obligatoire*
var machin = function() {}; // ; obligatoire function machin() {} // ; inutile
OK, OK, j'avais noté sur l'autre post (je n'emploie jamais var truc = function ...)
Mais z'alors : for(var i in T) T[i].onclick = function() { alert('truc') }
n'est pas correct du tout, du tout ? !
Si j'ai bien compris, le navigateur va se le re-écrire en : for(var i in T) T[i].onclick = function() { alert('truc'); }; et même : for(var i in T) { T[i].onclick = function() { alert('truc'); }; } î___ et là, il en faut aussi ?
http://www.ecma-international.org/publications/standards/Ecma-262.htm chapitre 7.9 toujours
OK,bis C'est terrible alors que les ouvrages de vulgarisation nous enduisent d'erreurs (le ; facultatif je ne l'ai pas inventé)
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Laurent vilday
Le point virgule à la fin d'une ligne d'assignation est *obligatoire*
Tiens, histoire de jouer un peu :) Quelle est la valeur de XXX à la fin du script [1] ?
function foo() { var retour = 1; return retour; };
var XXX = 5 + foo();
var machin = function() {}; // ; obligatoire function machin() {} // ; inutile
OK, OK, j'avais noté sur l'autre post (je n'emploie jamais var truc = function ...)
Ca permet (entre autre) la redéfinition d'une fonction.
function foo() { alert('1'); } function foo() { alert('2'); } foo();
Provoque une erreur : redeclaration of function foo
Pas d'erreur et la fonction foo(), quand appelée, alertera '2';
Mais z'alors : for(var i in T) T[i].onclick = function() { alert('truc') }
n'est pas correct du tout, du tout ? !
Ben si c'est "correct" car grace à la règle d'insertion automatique des point-virgules (7.9) ca va être transformé en quelque chose de syntaxiquement correct.
Si j'ai bien compris, le navigateur va se le re-écrire en : for(var i in T) T[i].onclick = function() { alert('truc'); }; et même : for(var i in T) { T[i].onclick = function() { alert('truc'); }; } î___ et là, il en faut aussi ?
non là il n'en faut pas. Puisque on est dans le même cas que function foo() { } ou qu'un if ( ... ) { } La règle d'insertion automatique ne s'applique pas dans ce cas là, puisque l'insertion d'un ";" créerait un block d'instruction vide hors il ne faut pas en insérer dans le cas d'un block vide.
"However, there is an additional overriding condition on the preceding rules: a semicolon is never inserted automatically if the semicolon would then be parsed as an empty statement or if that semicolon would become one of the two semicolons in the header of a for statement (section 12.6.3)."
http://www.ecma-international.org/publications/standards/Ecma-262.htm chapitre 7.9 toujours
OK,bis C'est terrible alors que les ouvrages de vulgarisation nous enduisent d'erreurs (le ; facultatif je ne l'ai pas inventé)
Certainement parce que la spécification dit aussi "For convenience, however, such semicolons may be omitted from the source text in certain situations" Qui est facilement interprétable par "on s'en fout, c'est facultatif". D'autant que je me demande ce qu'ils entendent par "for convenience". Parce que je vois pas pour qui c'est "convenient". Ni pour l'interpréteur ni pour le développeur.
Mais on en revient toujours au même principe énoncé depuis des années. Javascript est le langage le plus mal compris de la planète, on en découvre tous les jours :)
[1] Quelle est la valeur de XXX ? Sa valeur n'est pas 6 malheureusement, mais NaN
L'exemple sera complété d'un ";" à la fin du "return". Hors "return ; retour;" n'indique pas la même chose que "return retour;"
Parce que
"Certain ECMAScript statements (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, and throw statement) must be terminated with semicolons."
et que le saut de ligne n'est pas autorisé entre "return" et l'expression associée
Pas d'erreur et la fonction foo(), quand appelée, alertera '2';
Mais z'alors :
for(var i in T)
T[i].onclick = function() { alert('truc') }
n'est pas correct du tout, du tout ? !
Ben si c'est "correct" car grace à la règle d'insertion automatique des
point-virgules (7.9) ca va être transformé en quelque chose de
syntaxiquement correct.
Si j'ai bien compris, le navigateur va se le re-écrire en :
for(var i in T)
T[i].onclick = function() { alert('truc'); };
et même :
for(var i in T)
{
T[i].onclick = function() { alert('truc'); };
}
î___ et là, il en faut aussi ?
non là il n'en faut pas. Puisque on est dans le même cas que
function foo() { }
ou qu'un
if ( ... ) { }
La règle d'insertion automatique ne s'applique pas dans ce cas là,
puisque l'insertion d'un ";" créerait un block d'instruction vide hors
il ne faut pas en insérer dans le cas d'un block vide.
"However, there is an additional overriding condition on the preceding
rules: a semicolon is never inserted automatically if the semicolon
would then be parsed as an empty statement or if that semicolon would
become one of the two semicolons in the header of a for statement
(section 12.6.3)."
http://www.ecma-international.org/publications/standards/Ecma-262.htm
chapitre 7.9 toujours
OK,bis
C'est terrible alors que les ouvrages de vulgarisation nous enduisent
d'erreurs (le ; facultatif je ne l'ai pas inventé)
Certainement parce que la spécification dit aussi
"For convenience, however, such semicolons may be omitted from the
source text in certain situations"
Qui est facilement interprétable par "on s'en fout, c'est facultatif".
D'autant que je me demande ce qu'ils entendent par "for convenience".
Parce que je vois pas pour qui c'est "convenient". Ni pour
l'interpréteur ni pour le développeur.
Mais on en revient toujours au même principe énoncé depuis des années.
Javascript est le langage le plus mal compris de la planète, on en
découvre tous les jours :)
[1] Quelle est la valeur de XXX ?
Sa valeur n'est pas 6 malheureusement, mais NaN
L'exemple sera complété d'un ";" à la fin du "return".
Hors "return ; retour;" n'indique pas la même chose que
"return retour;"
Parce que
"Certain ECMAScript statements (empty statement, variable statement,
expression statement, do-while statement, continue statement, break
statement, return statement, and throw statement) must be terminated
with semicolons."
et que le saut de ligne n'est pas autorisé entre "return" et
l'expression associée
Pas d'erreur et la fonction foo(), quand appelée, alertera '2';
Mais z'alors : for(var i in T) T[i].onclick = function() { alert('truc') }
n'est pas correct du tout, du tout ? !
Ben si c'est "correct" car grace à la règle d'insertion automatique des point-virgules (7.9) ca va être transformé en quelque chose de syntaxiquement correct.
Si j'ai bien compris, le navigateur va se le re-écrire en : for(var i in T) T[i].onclick = function() { alert('truc'); }; et même : for(var i in T) { T[i].onclick = function() { alert('truc'); }; } î___ et là, il en faut aussi ?
non là il n'en faut pas. Puisque on est dans le même cas que function foo() { } ou qu'un if ( ... ) { } La règle d'insertion automatique ne s'applique pas dans ce cas là, puisque l'insertion d'un ";" créerait un block d'instruction vide hors il ne faut pas en insérer dans le cas d'un block vide.
"However, there is an additional overriding condition on the preceding rules: a semicolon is never inserted automatically if the semicolon would then be parsed as an empty statement or if that semicolon would become one of the two semicolons in the header of a for statement (section 12.6.3)."
http://www.ecma-international.org/publications/standards/Ecma-262.htm chapitre 7.9 toujours
OK,bis C'est terrible alors que les ouvrages de vulgarisation nous enduisent d'erreurs (le ; facultatif je ne l'ai pas inventé)
Certainement parce que la spécification dit aussi "For convenience, however, such semicolons may be omitted from the source text in certain situations" Qui est facilement interprétable par "on s'en fout, c'est facultatif". D'autant que je me demande ce qu'ils entendent par "for convenience". Parce que je vois pas pour qui c'est "convenient". Ni pour l'interpréteur ni pour le développeur.
Mais on en revient toujours au même principe énoncé depuis des années. Javascript est le langage le plus mal compris de la planète, on en découvre tous les jours :)
[1] Quelle est la valeur de XXX ? Sa valeur n'est pas 6 malheureusement, mais NaN
L'exemple sera complété d'un ";" à la fin du "return". Hors "return ; retour;" n'indique pas la même chose que "return retour;"
Parce que
"Certain ECMAScript statements (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, and throw statement) must be terminated with semicolons."
et que le saut de ligne n'est pas autorisé entre "return" et l'expression associée
Juste à cause d'un bête saut de ligne après le "return" et d'un point virgule manquant, ce qui transforme toute l'expression.
return maVariable;
à cause de 7.9 ( grâce à 7.9 ?? ) devient
return ; maVariable;
et non pas
return maVariable;
-- laurent
Laurent vilday
Tiens, histoire de jouer un peu :) Quelle est la valeur de XXX à la fin du script [1] ?
function foo() { var retour = 1; return retour; };
var XXX = 5 + foo();
J'ai oublié de rajouter que 1) le point-virgule à la fin de la fonction est inutile, c'est une expression vide 2) une fois la règle 7.9 appliquée, ce qu'il y a après "return" ne pourra jamais être interprété (en l'occurence l'expression inutile "retour;").
enfin bref, on pourrai trouver des tonnes d'autres exemples, mais ça s'arrêterait jamais :D J'espère que c'était compréhensible et que j'ai pas trop embrouillé les lecteurs ;p
-- laurent
Tiens, histoire de jouer un peu :) Quelle est la valeur de XXX à la fin
du script [1] ?
function foo()
{
var retour = 1;
return
retour;
};
var XXX = 5 + foo();
J'ai oublié de rajouter que
1) le point-virgule à la fin de la fonction est inutile, c'est une
expression vide
2) une fois la règle 7.9 appliquée, ce qu'il y a après "return" ne
pourra jamais être interprété (en l'occurence l'expression inutile
"retour;").
enfin bref, on pourrai trouver des tonnes d'autres exemples, mais ça
s'arrêterait jamais :D J'espère que c'était compréhensible et que j'ai
pas trop embrouillé les lecteurs ;p
Tiens, histoire de jouer un peu :) Quelle est la valeur de XXX à la fin du script [1] ?
function foo() { var retour = 1; return retour; };
var XXX = 5 + foo();
J'ai oublié de rajouter que 1) le point-virgule à la fin de la fonction est inutile, c'est une expression vide 2) une fois la règle 7.9 appliquée, ce qu'il y a après "return" ne pourra jamais être interprété (en l'occurence l'expression inutile "retour;").
enfin bref, on pourrai trouver des tonnes d'autres exemples, mais ça s'arrêterait jamais :D J'espère que c'était compréhensible et que j'ai pas trop embrouillé les lecteurs ;p
-- laurent
ASM
Le point virgule à la fin d'une ligne d'assignation est *obligatoire*
Tiens, histoire de jouer un peu :) Quelle est la valeur de XXX à la fin du script [1] ?
function foo() { var retour = 1; return retour; };
var XXX = 5 + foo();
Alors ? Quoi donne-ce ? J'hésite entre 6 et 51 (car avec tous ces ';' ça doit débarouler)
(je n'emploie jamais var truc = function ...)
Ca permet (entre autre) la redéfinition d'une fonction.
Pareil : je ne re-définis jamais une fonction (je ne programme pas et fait seulement d'la 'tite cuisine)
Pas d'erreur et la fonction foo(), quand appelée, alertera '2';
de même que : function foo() { alert('1'); } function foo() { alert('2'); }
là, sur ce coup, tu ne me convaincs pas.
[...]
"However, there is an additional overriding condition on the preceding rules: a semicolon is never inserted automatically if the semicolon would then be parsed as an empty statement or if that semicolon would become one of the two semicolons in the header of a for statement (section 12.6.3)."
Là il va me falloir passer le texte au traducteur et encore ... même en fr faut pas se laisser perdre (si, et, ou, mais)
[...]
[1] Quelle est la valeur de XXX ? Sa valeur n'est pas 6 malheureusement, mais NaN
Ha ! ben chu sul'flan ! pourtant ce n'est pas faute d'avoir pointvirgulé !
L'exemple sera complété d'un ";" à la fin du "return".
Mais de quoi je m'mèle là ! hein ?
Parce que
"Certain ECMAScript statements (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, and throw statement) must be terminated with semicolons."
et que le saut de ligne n'est pas autorisé entre "return" et l'expression associée
Pas d'erreur et la fonction foo(), quand appelée, alertera '2';
de même que :
function foo() { alert('1'); }
function foo() { alert('2'); }
là, sur ce coup, tu ne me convaincs pas.
[...]
"However, there is an additional overriding condition on the preceding
rules: a semicolon is never inserted automatically if the semicolon
would then be parsed as an empty statement or if that semicolon would
become one of the two semicolons in the header of a for statement
(section 12.6.3)."
Là il va me falloir passer le texte au traducteur
et encore ... même en fr faut pas se laisser perdre (si, et, ou, mais)
[...]
[1] Quelle est la valeur de XXX ?
Sa valeur n'est pas 6 malheureusement, mais NaN
Ha ! ben chu sul'flan !
pourtant ce n'est pas faute d'avoir pointvirgulé !
L'exemple sera complété d'un ";" à la fin du "return".
Mais de quoi je m'mèle là ! hein ?
Parce que
"Certain ECMAScript statements (empty statement, variable statement,
expression statement, do-while statement, continue statement, break
statement, return statement, and throw statement) must be terminated
with semicolons."
et que le saut de ligne n'est pas autorisé entre "return" et
l'expression associée
Pas d'erreur et la fonction foo(), quand appelée, alertera '2';
de même que : function foo() { alert('1'); } function foo() { alert('2'); }
là, sur ce coup, tu ne me convaincs pas.
[...]
"However, there is an additional overriding condition on the preceding rules: a semicolon is never inserted automatically if the semicolon would then be parsed as an empty statement or if that semicolon would become one of the two semicolons in the header of a for statement (section 12.6.3)."
Là il va me falloir passer le texte au traducteur et encore ... même en fr faut pas se laisser perdre (si, et, ou, mais)
[...]
[1] Quelle est la valeur de XXX ? Sa valeur n'est pas 6 malheureusement, mais NaN
Ha ! ben chu sul'flan ! pourtant ce n'est pas faute d'avoir pointvirgulé !
L'exemple sera complété d'un ";" à la fin du "return".
Mais de quoi je m'mèle là ! hein ?
Parce que
"Certain ECMAScript statements (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, and throw statement) must be terminated with semicolons."
et que le saut de ligne n'est pas autorisé entre "return" et l'expression associée