Le programme JS suivant a un comportement bizarre sous V8. J'aurais cru que "foo" est une variable dont on peut changer la valeur, après tout V8 ne donne pas d'erreur lorsqu'on fait "foo=123;" et pourtant print(foo) juste après donne la définition de fonction foo!
Est-ce que ça respecte ES5?
Marc
var foo = 999;
function run(thunk) { thunk(); }
function main() { print(foo); run(function foo() { print(foo); foo=123; print(foo); }); }
main();
/* V8 prints:
999 function foo() { print(foo); foo=123; print(foo); } function foo() { print(foo); foo=123; print(foo); }
*/