JavaScript和Lua之间的细微差别

时间:2009-06-20 21:10:57

标签: javascript lua

我只是喜欢JavaScript。它是如此优雅(想象一下在背景中叹息的痴情狂欢的安静声音)。

所以,最近我通过löve2d框架玩了Lua(很好!) - 我觉得Lua也很棒。我看待它们,这两种语言非常相似。

有明显的差异,比如

  • 语法
  • 问题域
  • 文库
  • 类型(有点)

但哪些是更微妙的? JavaScript编码器是否会认为在Lua中工作的东西略有不同?是否有任何陷阱对于有经验的编程人员尝试另一种语言而言可能并不明显?

例如:在Lua中,数组和散列不是分开的(只有表格) - 在JavaScript中,它们是数字数组和散列对象。嗯,这是一个比较明显的差异。

但是在变量范围,不变性或类似的东西方面是否存在差异?

8 个答案:

答案 0 :(得分:181)

答案 1 :(得分:11)

老实说,列出Javascript和Lua常用的东西比列出差异更容易。它们都是动态类型的脚本语言,但这就是你可以实现的。它们具有完全不同的语法,不同的原始设计目标,不同的操作模式(Lua总是编译为字节码并在Lua VM上运行,Javascript不同),列表不断进行。

答案 2 :(得分:11)

一些微妙的差异会让你至少抓到一次:

  • 不等于在Lua中拼写为~=。在JS中,它是!=
  • Lua arrays are 1-based - 他们的第一个索引是1而不是0。
  • Lua需要冒号而不是句点来调用对象方法。您编写a:foo()而不是a.foo()

如果需要,您可以使用句点,但必须明确传递self变量。 a.foo(a)看起来有点麻烦。有关详细信息,请参阅Programming in Lua

答案 3 :(得分:7)

JavaScript数组和对象比您想象的更接近。您可以使用数组表示法来获取其中任何一个的元素,并且可以向数组添加非数字索引。单个数组元素可以保存任何内容,并且数组可以是稀疏的。他们几乎是相同的堂兄弟。

答案 4 :(得分:3)

脱离我的头顶

Lua ......

  1. 支持coroutines
  2. 没有限制只是字符串/数字作为表的键。一切正常。
  3. 错误处理有点笨拙。要么您没有处理任何事情或使用pcall方法
  4. 我想我读过一些关于词汇范围差异的内容,以及Lua有更好的内容。
  5. 如果我没记错,lua中的正则表达式支持是有限的

答案 5 :(得分:3)

我喜欢这个问题并提供了答案。这两种语言看起来比我更相似的其他原因:

这两个   为变量分配函数,   可以动态构建功能,   并定义闭包。

答案 6 :(得分:1)

测试显示当前的Javascript也返回对象,或者至少来自逻辑表达式的字符串如lua:

function nix(){
    alert(arguments[0]||"0");
} 
nix();

答案 7 :(得分:0)

Lua和JavaScript都是原型基础语言。