Saya baru JavaScript dan saya melakukan beberapa praktek-praktek lokal dan variabel global scope, berikut adalah kode saya([biola][1]):
var myname = "initial"
function c(){
alert(myname);
var myname = "changed";
alert(myname);
}
c();
bila peringatan pertama disebut, itu menunjukkan myname
sebagai terdefinisi. jadi saya kebingungan mengapa saya tidak dapat mengakses contoh global myname
dan jika saya don't mendefinisikan myname
di dalam fungsi maka itu akan bekerja dengan baik.
Dalam Javascript, deklarasi variabel secara otomatis dipindahkan ke atas fungsi. Jadi, penerjemah akan membuatnya terlihat lebih seperti ini:
var myname = "initial"
function c(){
var myname;
// alerts undefined
alert(myname);
myname = "changed";
// alerts changed
alert(myname);
}
c();
Ini disebut 'mengangkat'.
Karena untuk mengangkat dan fakta bahwa ruang lingkup untuk setiap variabel adalah fungsi it's dinyatakan dalam, it's praktek standar untuk daftar semua variabel di atas berfungsi untuk menghindari kebingungan ini.
Hal ini tidak menggantikan variabel global. Apa yang terjadi adalah yang disebut "variabel mengangkat". Artinya, var myname;
akan dimasukkan di atas fungsi. Selalu menginisialisasi variabel anda sebelum anda menggunakannya
var myname = "initial";
function c() {
alert(myname);
myname = "changed";
alert(myname);
}
c();