2015-03-26 13 views
18

benim işlevi üstündeki "use strict" ekleyerek sıkı modunu tetikleyebilir (veya dosya, ancak bu önerilmez.)Hangi ECMAScript 6 özellikleri sıkı mod anlamına gelir? ECMAScript 5 (aka JavaScript,) olarak

Ben ECMAScript'te 6'da, belirli sözdizimi özellikleri dönecek anlıyoruz Sıkı modda, özellikle class ve modülleri (ancak bunu yapın.)

ECMAScript 6 dünyasında, katı modun tetiklenmesinin tam yolları nedir?

+0

Tahmin ediyorum es6 tamamen katı moddur. –

+0

Bu orijinal plandı, ancak geriye dönük uyumluluk endişeleri, "lax modu" için hala çok fazla destek içerdiği anlamına geliyor. –

+5

[İşte taslağın ilgili bölümünün ilgili bölümüdür.] (Http://people.mozilla.org/~jorendorff/es6-draft.html#sec-strict-mode-code) – Pointy

cevap

21

The spec diyor ki:

  • Modül kodu her zaman katı mod kodudur.
  • ClassDeclaration veya ClassExpression'un tüm bölümleri sıkı mod kodudur.
  • ...

Gerisi ES5 bilinen şeyler, "use strict"; directive ile başlayan temelde her küresel/eval/fonksiyon kodu vardır. Yeni ES6 işlev çeşitlerinde de çalışır (ok, jeneratör, yöntem sözdizimi).

+3

Jeneratörlerin dolaylı olarak katı olmadığını görmek beni biraz şaşırttı. –

+0

Yanıt ve spec (yukarıdaki biriyle bağlantılı olarak) önemli bir bilgi parçasını kaçırıyor: ES 2015 modülünü kullanırsam ancak ES 2015 modüllerini kullanmazsam ne olur? Çünkü io.js kullanıyorum ve yeni modül sistemi henüz kullanılamıyor (Babel kullanmıyorsam), bu yüzden ES 2015 özelliklerini kullanıyorum ama gerçek anlamda * yeni modül sözdizimini kullanana kadar bekle. Bu senaryoda katı mod ima ediliyor mu gösterilmiyor? Değilse gerçekten "ES 2015 modülleri" demeliler. Sadece tarayıcılar açık olduğundan, node.js/io.js için önemlidir, ancak node.js zaten modüllere sahiptir .... –

+0

@ MörreNoseshine: Yanıtın dediği gibi, modüller arası katı mod kuralları sadece ES5'te olduğu gibi. Düğüm ("modül") betiklerinin, modül kapsamının IEFE'nin katı modda kullanılmasını sağlamak için "kullanımı sıkı" ile açıkça başlatılması gerekir. – Bergi

İlgili konular