Javascript ES6 ihracat const vs ihracat let


149

Dışa aktarmak istediğim bir değişkenim olduğunu varsayalım. Arasındaki fark nedir

export const a = 1;

vs

export let a = 1;

Ben arasındaki farkı anlamak constve letfakat bunları verdiğinizde, farklar nelerdir?


exportAnahtar kelime ayrıntıları burada . Şu anda herhangi bir web tarayıcısı tarafından yerel olarak desteklenmemektedir.
RBT

Yanıtlar:


247

ES6'da, importdışa aktarılan değerlerde canlı salt okunur görünümlerdir. Sonuç olarak, bunu yaptığınızda import a from "somemodule";, modülde anasıl beyan ederseniz verin atayamazsınız a.

Ancak, içe aktarılan değişkenler canlı görüntüleme olduğundan, dışa aktarılan "ham" dışa aktarılan değişkene göre değişir. Aşağıdaki kodu göz önünde bulundurun (aşağıdaki referans makaleden ödünç alınmıştır):

//------ lib.js ------
export let counter = 3;
export function incCounter() {
    counter++;
}

//------ main1.js ------
import { counter, incCounter } from './lib';

// The imported value `counter` is live
console.log(counter); // 3
incCounter();
console.log(counter); // 4

// The imported value can’t be changed
counter++; // TypeError

Gördüğünüz gibi, fark gerçekten yatıyor lib.js, değil main1.js.


Özetlemek:

  • importModüldeki karşılık gelen değişkenleri nasıl bildirirseniz verin, -ed değişkenlerine atayamazsınız .
  • Geleneksel letrakip olduğunu- constsemantik modülünde bildirilen değişken için de geçerlidir.
    • Değişken bildirilirse const, herhangi bir yerde yeniden atanamaz veya geri yüklenemez.
    • Değişken bildirilirse let, yalnızca modülde yeniden atanabilir (ancak kullanıcı tarafından atanamaz). Değiştirilirse, import-ed değişkeni buna göre değişir.

Referans: http://exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values


2

Bir kez içe aktardığınızda, davranışın aynı olduğunu düşünüyorum (değişkeninizin kaynak dosya dışında kullanılacağı yerde).

Tek fark, dosyayı bu dosyanın sonundan önce yeniden atamaya çalışmanızdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.