JavaScript ve Lua arasında ince farklar | Netgez.com
SORU
20 HAZİRAN 2009, CUMARTESİ


JavaScript ve Lua arasında ince farklar

Ben sadece JavaScript seviyorum. Çok şık (tabii fanboy arka planda sessiz iç çekme sesi hayal edin).

Bu yüzden, son zamanlarda löve2d çerçeve (güzel!) Lua ile oynadım - Lua de harika olduğunu düşünüyorum. Onlar benim gördüğüm kadarıyla, bu iki dilçokbenzer.

Bariz farklar var

  • sözdizimi
  • sorun etki alanı
  • kitaplıkları
  • türleri (bir bit)

ama daha ince olanlar? Biraz farklı sadece Lua çalışan bir JavaScript kodlayıcı hafife almak bir şey var mı? Diğer bir çalışıyor bir dilin deneyimli kodlayıcı için açık olmayabilir herhangi bir tuzaklar var mı?

Örneğin: Lua, diziler ve karma ayrı (sadece tablolar var) - JavaScript, sayısal Diziler ve karma Nesneler. Peki, bu daha belirgin farklardan biri.

Ama değişken kapsamı, değişmezliğini tanıdı farklılıklar ya da böyle bir şey var mı?

CEVAP
20 HAZİRAN 2009, CUMARTESİ


Biraz daha farklılıklar:

  • Luayerel destek coroutines için vardır.
  • LuaHerhangi bir karşılaÅŸtırma operatörleri türleri arasında doesn't convert. JS, === !== sadece hokkabazlık türü yok.
  • Luaüs alma operatörü (^);JSyok.JSçok fazla operatörler de dahil olmak üzere üçlü koÅŸul operatörü (?:), arttırma/azaltma, bit operatörleri, yazın operatörleri (typeof instanceof), ek atama ve ek operatörler karşılaÅŸtırma operatörleri.
  • JS, eÅŸit ve operatörlerin ve ark az daha düşük bir öncelik vardır eÅŸittir. Lua, tüm karşılaÅŸtırma operatörleri same precedence.
  • Luadestekler 31**.
  • Luadestekler 32**. Henüz standart deÄŸilJavascript, Mozilla JS motoru (Opera, bir ölçüde) JS 1.7 (Firefox 2 parçası olarak kullanılabilir) adı altında bu yana benzer bir özellik desteklemiÅŸtir "destructuring assignment". JS Destructuring baÄŸlamlarda atama dışında, function definitions & calls loop initializers gibi kullanılabilir olarak daha genel. Destructuring assignment bir süre için ECMAScript (Javascript arkasında dil standart) önerilen bir yanı olmuÅŸtur.
  • Lua, 37**.
  • Luasenigetfenv & setfenv manipulate environments olabilir.
  • JStüm fonksiyonları variadic.Luafonksiyonları explicitly declared as variadic olmalıdır.
  • ForeachJSnesne özellikleri üzerinde döngüler. ForeachLuaanahtar for kullanın) üzerinde kullanımına döngüler ve daha genel.
  • JS global ve fonksiyon kapsamı vardır.Luaglobal and block scope. Yapıları blocks yeni (, *, while*13 12*örneÄŸin *) takdim kontrol.

    • Ölçüm kuralları arasındaki farklılıklar, dış deÄŸiÅŸken bir tartışma denir baÅŸvuru nedeniyle ("" Lua dilinde) farklı Lua ve . iÅŸlenebilir upvalues denir ^em>Javascript. Bu closures in for loops, en çok deneyimli olan ve sürpriz bir ÅŸekilde bazı insanları yakalar.Javascript, for bir döngü vücudun herhangi bir fonksiyon döngü vücuttaki tüm baÅŸvuru same outer variables ilan yani yeni bir kapsam tanıştırmıyor. Lua, for döngünün her tekrarında her döngü deÄŸiÅŸkeni için yeni bir yerel deÄŸiÅŸken oluÅŸturur.

      local i='foo'
      for i=1,10 do
        -- "i" here is not the local "i" declared above
        ...
      end
      print(i) -- prints 'foo'
      

      Yukarıdaki kodu eşdeğerdir:

      local i='foo'
      do
        local _i=1
        while _i<10 do
          local i=_i
          ...
          _i=_i 1
        end
      end
      print(i)
      

      Sonuç olarak, fonksiyonları ayrı yineleme tanımlanan her başvurulan döngü değişkeni için farklı upvalues. Ayrıca Implementation of closures in Lua? Nicolas Bola cevaplarını görmek ve "What are the correct semantics of a closure over a loop variable?" ve "The Semantics of the Generic for".

  • Tamsayı hazır bilgiJSsekizli olabilir.
  • JSaçık Unicode desteÄŸi vardır.
  • Lua, ~ ! yerine kullanılır. (, if foo ~= 20 then ... end) (teknik olarak sözdizimi, ama kolayca gözden kaçan ve ince hataların neden olur).
  • Lua, not/or/and anahtar kelimeler !/||/&& (da) deÄŸil, aynı zamanda sözdizimi kolay kolay unutulmaz yerine kullanılır.
  • LuadeÄŸer herhangi bir türü (nil NaN hariç) dizin için bir tablo; kullanılabilirJavaScriptdizinler dizeleri dönüştürülür nesne.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • NextGenWindows

    NextGenWindo

    8 Kasım 2011
  • TVNorge

    TVNorge

    5 EKİM 2006