区别:1、JavaScript的注释代码为“//”,lua的注释代码为“–”;2、JavaScript利用val来声明全局变量不存在局部变量,lua则不需要直接定位为全局变量,local声明则为局部变量。
本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。
lua与javascript的区别是什么
Lua和Javascript差异对比
Lua模拟器js方案
1.语法级模拟
lua与js语言差异
1.1注释
js 为//,lua为–.
1.2变量
js利用val来声明全局变量不存在局部变量,lua则不需要直接定位则为全局变量,local声明则为局部变量。
1.3运算符
-
js
+ – * / % ++ —
= += -= *= /= %=
支持字符串 +
txt1 = "what a very";
txt2 = "nice day";
txt3 =txt1 " " +txt2;
打印txt3输出结果为"what a very nice day".
规则:
把数字与字符串相加,结果将成为字符串.
-
lua
二元:+ – * / ^ %
一元:-(负号)
lua字符串拼接为..
如"Hello ".."World"拼接成Hello World
1.4关系操作符
-
js关系操作符
== ===(全等) != > < >= <=
-
lua关系操作符
< > <= >= == ~=(不等于)
1.5 逻辑运算符
-
js
&& || !
-
lua
and or not
1.6 If …Else语句
-
js 类c
if else
-
lua
if then else
if then
elseif then
else
end
一定要有end
1.7 Switch语句
lua不支持Switch 语句
1.8 消息框
-
js
警告框 alert("文本")
确认框 prompt("文本","默认值")
-
lua
扩展支持警告框和确认框
1.9 函数
-
js
function 函数名(参数) { 代码... }
js带{}类 c
-
lua
function 函数名( 参数) end
lua类vb 脚本
2.0 For 循环
js:类c
for (i=0;i<=10;i++) { document.write("The number is " + i) document.write("<br />") }
lua:分两种 数字型For 和泛型For
数字型For:
for var= exp1,exp2,exp3 do <执行体> end
var从exp1变化到exp2,step为exp3递增
不指定exp3默认为1
for i =1,100 do print(i) end for i =1,100,2 do print(i) end
泛型For
泛型For循环通过一个迭代器(iterator)函数来遍历所有值:
--打印数组a 的所有值 for i,v in pairs(a) do print(v) end
Lua基础库提供了ipairs,这是一个用于遍历数组的迭代器函数。
在每次循环中i会被赋予一个索引值,同时v会被赋予一个对应于
该索引的数组元素值。
---打印table t中所以的key for k in pairs(t) do print(k) end
2.1 While循环
js: 类c
while (变量<=结束值) { 需执行的代码 } lua: i =1; while a[i] do print(a[i]) i = i+1; end
同时lua还支持repeat:支持repeat-until语句实现循环.
repeat: line = io.read() until line~="" print(line)
上面的代码:读取line直到line不为""的时候结束,并打印此line的值。
2.2 Break 和 Continue
-
js:类c
有两种可以用在循环中的语句:break 和 continue
Break
break 命令可以终止循环的运行,然后继续执行循环之后的代码(如果循环之后有代码的话)。
Code示例:
<script type="text/javascript"> var i=0 for (i=0;i<=10;i++) { if (i==3){break} document.write("The number is " + i) document.write("<br />") } </script> Continue
continue 命令会终止当前的循环,然后从下一个值继续运行。
<script type="text/javascript"> var i=0 for (i=0;i<=10;i++) { if (i==3){continue} document.write("The number is " + i) document.write("<br />") } </script>
-
Lua:
支持break,但不支持continue.
local i =1 while a[i] do if a[i] == v then break end i = i +1 end
2.3 For…In 声明
js:用For…In 声明专门遍历数组内的元素。
For…In 声明用于对数组或者对象的属性进行循环操作。
for … in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
语法:
for (变量 in 对象) { 在此执行代码 }
Code:
<script type="text/javascript"> var x var mycars = new Array() mycars[0] = "Saab" mycars[1] = "Volvo" mycars[2] = "BMW" for (x in mycars) { document.write(mycars[x] + "<br />") } </script>
Lua:很简单直接用泛型的For取代即可.