Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JavaScript: Funktion näkyvyys

HTML5 [08.07.2014 00:02:49]

#

Funktion foo näkyvyysalue (scope) on globaali niin kuin kuuluukin. Sama funktio nimellä bar on kuitenkin paikallinen:

var foo = function bar() {
    if (foo === bar) { return "YES"; }
    return "NO";
};

foo(); // funktio toimii
bar(); // funktio ei näy tänne (”ReferenceError: bar is not defined”)

Mistä tämä johtuu, ts. mikä on sääntö, jonka mukaan näin kuuluu käydä?

-tossu- [08.07.2014 00:55:51]

#

Sääntö löytyy ECMAScriptin määrittelystä.

http://www.ecma-international.org/ecma-262/5.1/#sec-13:

The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function to call itself recursively. However, unlike in a FunctionDeclaration, the Identifier in a FunctionExpression cannot be referenced from and does not affect the scope enclosing the FunctionExpression.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta