Neden JavaScript işlevi benim isim çatışan?
Bir işlev için atanmış bir değişken ve fonksiyon isimlerini çatışma olduğunda, sadece ne olacağını görmek için aşağıdaki kodu yazdım:
var f = function() {
console.log("Me original.");
}
function f() {
console.log("Me duplicate.");
}
f();
Alıyorum çıktı "Bana özgün." Neden diğer işlevi çağrıldı değil mi?
Eğer ben var f = new function() {
, özgün görevim değiştirirsem de, "Bana", eğer data object is not a function
diyerek izledi. özgün Biri bana açıklayabilir mi lütfen?
CEVAP
Fonksiyon bildirimleri çekilir (tepesine) JavaScript. Sipariş ayrıştırma açısından yanlış olsa da, şifre anlamsal işlevi bildirimleri çekilir olduğundan aşağıdaki aynıdır:
function f() {
console.log("Me duplicate.");
}
var f = function() {
console.log("Me original.");
}
f();
Teslim olan, işlev adı hariç aynı gibi
var f = function() {
console.log("Me duplicate.");
}
var f = function() {
console.log("Me original.");
}
f();
Teslim olan, değişken nedeniyle, kaldırma aynıdır:
var f;
f = function() {
console.log("Me duplicate.");
}
f = function() {
console.log("Me original.");
}
f();
Ne aldığını açıklıyor, işlevi ağır basan sensin. Daha genel olarak, var
birden çok bildirimi - var x = 3; var x = 5
tamamen yasal JavaScript izin verilir. ES5 katı modda let
yeni ECMA 6 standart tablolarda korusun bu gibi var
normal ifadeler.
@This article kangax javascript fonksiyonları konusunu netleştirme fantastik bir iş yok
Neden' ◎ܫ◎ ve fonksiyonu t JavaSc...
Neden benim program tam olarak 8192 el...
Neden bir JavaScript değişken dolar iş...
Daha iyi bir şekilde Javascript işlevi...
Neden Javascript sadece IE Geliştirici...