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

  • Art Food Kitty - Kelly Eddington

    Art Food Kit

    7 Kasım 2006
  • girleffect

    girleffect

    20 Mayıs 2008
  • Skrillex

    Skrillex

    6 NİSAN 2010