Autor Zpráva
jouda01
Profil *
Ahoj, nasledujici kod vypise "test is not defined"

Proc to tak je? ta funkce test je prece definovana v prvnim kodu!?

Jak to udelat aby ta ukazka fungovala?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<script>
//toto bude v externim kodu - script.js
(function(){
    var test = function(){    
          alert(1);
     };
})();
</script>
<script type='text/javascript'>
(function(){test();})();
</script>
</body>
</html>

Diky
Nox
Profil
Existuje jen ve scopu té funkce, není nijak předána ven, právě to dělá ten obalový function - symboly uvnitř nezaplevelí globální prostor

Možná by fungovalo function test(){ ... } anebo třeba window.test = test
Chamurappi
Profil
Reaguji na joudu01:
Můžeš dát var test; mimo tu samovolající funkci a přiřadit funkci s alertem až dodatečně uvnitř.


Reaguji na Noxe:
Možná by fungovalo function test(){ ... }
Ne. Rozsah platnosti je stejný, akorát by pak proměnná test byla naplněna od začátku.
peta
Profil
function(){
    var test = function(){    
          alert(1);
     };
Uvnitr funkce mas vnitrni promennou, platnou jen pro tu funkci. Neni globalni.
Je to uplne stejne jako
function aaa(){
    var test = 5;
     };
aletr(test); //undefined
Cili, musis definovat globalni promennou mimo funkci. Viz Chamurappi, hned pod ten komentar.
PS. Noxovu vysvetleni nerozumim ani ja :) Plne cizich slov.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: