我只是喜欢JavaScript。它是如此优雅(想象一下在背景中叹息的痴情狂欢的安静声音)。
所以,最近我通过löve2d框架玩了Lua(很好!) - 我觉得Lua也很棒。我看待它们,这两种语言非常相似。
有明显的差异,比如
但哪些是更微妙的? JavaScript编码器是否会认为在Lua中工作的东西略有不同?是否有任何陷阱对于有经验的编程人员尝试另一种语言而言可能并不明显?
例如:在Lua中,数组和散列不是分开的(只有表格) - 在JavaScript中,它们是数字数组和散列对象。嗯,这是一个比较明显的差异。
但是在变量范围,不变性或类似的东西方面是否存在差异?
答案 0 :(得分:181)
答案 1 :(得分:11)
老实说,列出Javascript和Lua常用的东西比列出差异更容易。它们都是动态类型的脚本语言,但这就是你可以实现的。它们具有完全不同的语法,不同的原始设计目标,不同的操作模式(Lua总是编译为字节码并在Lua VM上运行,Javascript不同),列表不断进行。
答案 2 :(得分:11)
一些微妙的差异会让你至少抓到一次:
~=
。在JS中,它是!=
a:foo()
而不是a.foo()
† †如果需要,您可以使用句点,但必须明确传递self
变量。 a.foo(a)
看起来有点麻烦。有关详细信息,请参阅Programming in Lua。
答案 3 :(得分:7)
JavaScript数组和对象比您想象的更接近。您可以使用数组表示法来获取其中任何一个的元素,并且可以向数组添加非数字索引。单个数组元素可以保存任何内容,并且数组可以是稀疏的。他们几乎是相同的堂兄弟。
答案 4 :(得分:3)
脱离我的头顶
Lua ......
答案 5 :(得分:3)
我喜欢这个问题并提供了答案。这两种语言看起来比我更相似的其他原因:
这两个 为变量分配函数, 可以动态构建功能, 并定义闭包。
答案 6 :(得分:1)
测试显示当前的Javascript也返回对象,或者至少来自逻辑表达式的字符串如lua:
function nix(){
alert(arguments[0]||"0");
}
nix();
答案 7 :(得分:0)
Lua和JavaScript都是原型基础语言。