html - Opseg funkcije u JavaScriptu između oznaka skripte
Imam dva različita JSP-a koje Java backend spaja zajedno i šalje natrag na istu renderiranu HTML stranicu.
Svaki JSP ima vlastiti <script> blok i definira funkcije unutar tog bloka:
JSP #1:
<script type="text/javascript">
function blah() { ... }
</script>
JSP #2
<script type="text/javascript">
function foo()
{
blah();
}
</script>
Kao što sam rekao, backend dodaje ove u HTTP odgovor i šalje ih natrag pregledniku tijekom istog zahtjeva.
Kada pokrenem ovu stranicu u svom pregledniku, odmah mogu reći da se blah() ne izvršava kada se poziva foo(). Vidim pogrešku u konzoli u Firebug-u koja kaže blah() nije definirana. Pitam se ima li blah() opseg samo unutar svog vlastitog <script> taga, i isto vrijedi za foo(). Je li to slučaj ovdje, ili je nešto drugo pošlo po krivu?
Kada odem pogledati izvor stranice, vidim i blokove skripti i obje funkcije. To mi govori da se sve generira/prikazuje ispravno na strani poslužitelja, ali možda je moj pristup inherentno pogrešan (definiranje funkcija unutar različitih oznaka skripti). Unaprijed hvala.
Odgovor #1
svi su globalni. mogu se vidjeti međusobno. problem nastaje kada se definiraju i pozivaju jedni druge.
trebali biste ih definirati i pozvati tim redoslijedom:
- bar
- foo
pozovi foo
- foo izvršeno i poziva bar
- bar se izvršava
Odgovor #2
Funkciju možete pozvati ovako:
(function($) {
var namespace;
namespace = {
something : function() {
alert('hello there!');
},
bodyInfo : function() {
alert($('body').attr('id'));
}
};
window.ns = namespace;
})(this.jQuery);
$(function() {
ns.something();
ns.bodyInfo();
});
