2016-04-28 20 views
0

Kann mir jemand erklären, warum das nicht funktioniert und mir zeigen, wie es funktioniert? Ich habe versucht, einen Namespace und IIFEs Funktionen zu erstellen, aber ich kann es nicht scheinen.

$(document).ready(function() { 
    alert (hi); 
}); 

$(document).ready(function() { 
    var hi = "hello" 
}); 

Vielen Dank!

Antwort

4

Wenn Sie dies tun:

$(document).ready(function() { 
    var hi = "hello" 
}); 

Sie erstellen eine Variable mit dem Namen hi, die zu dieser Callback-Funktion lokal ist. Es ist einfach nicht zugänglich außerhalb dieser Funktion. Dies ist eine Eigenschaft der Sprache.

Sie die Variable auf einem höheren Umfang wie diese erklären können:

var hi; 
$(document).ready(function() { 
    hi = "hello" 
}); 

Und dann wird der Wert dieser Variablen außerhalb des Rahmens zur Verfügung stehen wird, aber Sie wissen nicht unbedingt, wenn sie den richtigen Wert erhält weil Sie nicht wissen, wenn der Rückruf $(document).ready() aufgerufen wird, wenn Sie Ihren Code innerhalb dieses Rückrufs einfügen.


Es macht wirklich wenig Sinn, zu versuchen, eine Variable zwischen zwei Anrufen zu $(document).ready() zu teilen. Es würde viel mehr Sinn machen, nur innerhalb des gleichen $(document).ready() Rückruf den Code zu setzen:

$(document).ready(function() { 
    var hi = "hello" 
    alert (hi); 
}); 

Nicht wirklich

Empfohlen Wenn Sie eine Variable zwischen zwei Anrufen versuchen würden zu teilen $(document).ready() (etwas, das ich nicht wirklich empfehlen, weil es Ihren Code etwas zerbrechlich macht), kann es getan werden. Rückrufe $(document).ready() werden in der Reihenfolge aufgerufen werden sie gebunden sind, so dass Sie Dinge müssen in geeigneter Weise bestellen:

var hi; 
$(document).ready(function() { 
    hi = "hello" 
}); 

$(document).ready(function() { 
    alert (hi); 
}); 

Dadurch wird sichergestellt, dass der erste $(document).ready() Rückruf, der den Wert von hi setzt zunächst vor dem zweiten heißen eine, wo Sie versuchen, den Wert zu verwenden.

+0

Süße, das ist, was ich dachte, wurde abgestimmt. – BlunderCode

+0

@ jfriend00 überprüft – BlunderCode

Verwandte Themen