SORU
27 Mayıs 2014, Salı


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
27 Mayıs 2014, Salı


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BaaaStuds's channel

    BaaaStuds's

    10 Mart 2009
  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • LaKe Lightroom Tutorials

    LaKe Lightro

    22 Temmuz 2014