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

  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • HowcastFoodDrink

    HowcastFoodD

    21 EYLÜL 2010
  • jesiel santos

    jesiel santo

    15 Ocak 2009