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

  • inovationgmbh

    inovationgmb

    28 EYLÜL 2010
  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • tunez4you

    tunez4you

    20 EKİM 2008