Penjelasan terperinci tentang perbezaan antara pembolehubah tempatan dan pembolehubah global dalam kemahiran javascript_javascript

WBOY
Lepaskan: 2016-05-16 16:12:44
asal
1871 orang telah melayarinya

Javascript mempunyai dua jenis pembolehubah: pembolehubah tempatan dan pembolehubah global. Sudah tentu, artikel kami adalah untuk membantu anda benar-benar membezakan antara kedua-dua pembolehubah ini.

Pertama sekali, pembolehubah tempatan hanya boleh dipanggil dalam fungsi di mana pembolehubah ini diisytiharkan. Pembolehubah global ialah pembolehubah yang boleh dipanggil sepanjang kod. Sudah tentu, tidak jelas untuk memahaminya secara literal Biar saya memperkenalkannya secara terperinci di bawah:
Seperti yang kita sedia maklum, pembolehubah perlu diisytiharkan dengan kata kunci var. Tetapi pembolehubah juga boleh digunakan secara tersirat dalam JavaScript, iaitu, ia boleh digunakan secara langsung tanpa pengisytiharan. Selain itu, pastikan anda ambil perhatian bahawa JavaScript sentiasa menggunakan pembolehubah yang diisytiharkan secara tersirat sebagai pembolehubah global.
Contohnya:

Salin kod Kod adalah seperti berikut:

fungsi myName() {
i = 'yuanjianhang';
}
myName();
fungsi sayName() {
makluman(i);
}
sayName();

Hasil keluaran ialah: yuanjianhang

Ini menunjukkan pembolehubah i ialah pembolehubah global Jika kod di atas ditukar kepada yang berikut:

Salin kod Kod adalah seperti berikut:

fungsi myName() {
var i='yuanjianhang';
}
myName();
fungsi sayName() {
makluman(i);
}
sayName();

Pada masa ini, penyemak imbas tidak akan mempunyai sebarang hasil keluaran, kerana i ditakrifkan dalam fungsi myName, jadi ia hanya pembolehubah tempatan myName dan tidak boleh dipanggil secara luaran.

Sekarang lihat kembali kod berikut:

Salin kod Kod adalah seperti berikut:

fungsi myName() {
i = 'yuanjianhang';
}
myName();
fungsi sayName() {
makluman(i);
}
sayName();

Sekarang, mari buat beberapa perubahan dan alih keluar myName();

Salin kod Kod adalah seperti berikut:
fungsi myName() {
i = 'yuanjianhang';
}
fungsi sayName() {
makluman(i);
}
sayName();

Pada masa ini, penyemak imbas tidak akan bertindak balas. Kerana walaupun i ialah pembolehubah global, fungsi myName() belum dipanggil, jadi ia bersamaan dengan mengisytiharkan i tetapi tidak memberikan sebarang nilai kepada i, jadi tiada output.

Dengan cara yang sama, jika contoh di atas ditukar kepada:


Salin kod Kod adalah seperti berikut:
fungsi myName() {

i = 'yuanjianhang';
}
fungsi sayName() {
makluman(i);
}
sayName();
myName();

Dalam kes ini, tiada hasil akan dikeluarkan Kod JavaScript dilaksanakan dari atas ke bawah Apabila fungsi sayName() dipanggil, nilai pembolehubah i akan diperiksa pada masa ini belum dilaksanakan, iaitu saya belum diberikan nilai lagi, jadi tiada keputusan akan dikeluarkan.


Untuk memudahkan pemahaman semua orang, berikut ialah satu lagi contoh:

Salin kod Kod adalah seperti berikut:
var i = 'yuanjianhang';
function myloveName() {
i = 'guanxi';
}
myloveName();
fungsi myName() {
makluman(i);
}
myName();

Apakah keputusan kali ini?

Jawapannya ialah guanxi
Pertama, nilai asal i ialah yuanjianhang, tetapi selepas memanggil fungsi myloveName(), nilai i ditukar kepada guanxi, jadi hasil keluaran akhir ialah guanxi.

Jika anda menukar kod kepada:

Salin kod Kod adalah seperti berikut:
var i = 'yuanjianhang';
function myloveName() {
var i = 'guanxi';
}
myloveName();
fungsi myName() {
makluman(i);
}
myName();

Das Ergebnis ist Yuanjianhang, da die beiden i im Code unterschiedlich sind, eines ist global und das andere ist lokal. Obwohl die Namen der beiden i gleich sind Das Wesentliche ist unterschiedlich, so wie es zwei Personen mit demselben Namen gibt. Obwohl die Namen gleich sind, handelt es sich nicht um dieselbe Person.

Wenn Sie den Code wie folgt ändern:

Code kopieren Der Code lautet wie folgt:

var i = 'yuanjianhang';
Funktion myloveName() {
i = 'guanxi';
}
Funktion meinName() {
alarm(i);
}
meinName();
myloveName();

Ich glaube, Sie können das Ergebnis selbst berechnen, und das Ergebnis ist Yuanjianhang.

Da globale Variablen innerhalb der Funktion aufgerufen werden können, wie wäre es mit der folgenden Situation:

Code kopieren Der Code lautet wie folgt:

var i = 'yuanjianhang';
Funktion myloveName() {
i = 'guanxi';
alarm(i);
}
myloveName();

Welchen Wert hat die Variable zu diesem Zeitpunkt?

Lass es uns analysieren:

Zuerst wird der globalen Variablen i der Wert zugewiesen: yuanjianhang.

Dann wird die Funktion myloveName() aufgerufen und der globalen Variablen i wird ein neuer Wert zugewiesen: guanxi

Das Ergebnis muss also sein: Guanxi.

Was passiert, wenn wir die Warnung wie folgt weiterleiten:

Code kopieren Der Code lautet wie folgt:

var i = 'yuanjianhang';
Funktion myloveName() {
alarm(i);
i = 'guanxi';
}
myloveName();

Was ist derzeit das Ergebnis?
Das verifizierte Ergebnis ist: undefiniert
Was ist, wenn der Code so aussieht:

Code kopieren Der Code lautet wie folgt:

var i = 'yuanjianhang';
Funktion myloveName() {
alarm(i);
}
myloveName();

Das Ergebnis von i zu diesem Zeitpunkt ist: yuanjianhang

Warum tritt die obige undefinierte Situation auf? Weil die Ausführungsreihenfolge des Codes von oben nach unten erfolgt und i nicht definiert ist, bevor i ausgegeben wird. Hier ist also ersichtlich, dass bei der Verwendung von Code die Variablendeklaration an den Anfang des Codes gestellt werden muss, um ähnliche Probleme zu vermeiden!

Ähnlich:

Code kopieren Der Code lautet wie folgt:

var i = 'yuanjianhang';
Funktion myloveName() {
alarm(i);
var i = 'guanxi';

}
myloveName();

In diesem Fall wird auch Folgendes ausgegeben: undefiniert

Okay, ich habe nur so viele Einführungen zu Variablen, ich glaube, dass jeder sie verstehen kann. Unabhängig davon, wie der Code kopiert wird, ändert sich sein Kern nicht.

Das Obige ist der gesamte Inhalt dieses Artikels. Habt ihr ein tieferes Verständnis für den Unterschied zwischen lokalen Variablen und globalen Variablen in JavaScript? Ich wünsche euch allen ein frohes neues Jahr und viel Spaß beim Lernen.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan