區(qū)別:1、JavaScript的注釋代碼為“//”,lua的注釋代碼為“–”;2、JavaScript利用val來聲明全局變量不存在局部變量,lua則不需要直接定位為全局變量,local聲明則為局部變量。
本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。
lua與javascript的區(qū)別是什么
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".
規(guī)則:
把數(shù)字與字符串相加,結果將成為字符串.
-
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 函數(shù)
-
js
function 函數(shù)名(參數(shù)) { 代碼... }
js帶{}類 c
-
lua
function 函數(shù)名( 參數(shù)) end
lua類vb 腳本
2.0 For 循環(huán)
js:類c
for (i=0;i<=10;i++) { document.write("The number is " + i) document.write("<br />") }
lua:分兩種 數(shù)字型For 和泛型For
數(shù)字型For:
for var= exp1,exp2,exp3 do <執(zhí)行體> 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循環(huán)通過一個迭代器(iterator)函數(shù)來遍歷所有值:
--打印數(shù)組a 的所有值 for i,v in pairs(a) do print(v) end
Lua基礎庫提供了ipairs,這是一個用于遍歷數(shù)組的迭代器函數(shù)。
在每次循環(huán)中i會被賦予一個索引值,同時v會被賦予一個對應于
該索引的數(shù)組元素值。
---打印table t中所以的key for k in pairs(t) do print(k) end
2.1 While循環(huán)
js: 類c
while (變量<=結束值) { 需執(zhí)行的代碼 } lua: i =1; while a[i] do print(a[i]) i = i+1; end
同時lua還支持repeat:支持repeat-until語句實現(xiàn)循環(huán).
repeat: line = io.read() until line~="" print(line)
上面的代碼:讀取line直到line不為""的時候結束,并打印此line的值。
2.2 Break 和 Continue
-
js:類c
有兩種可以用在循環(huán)中的語句:break 和 continue
Break
break 命令可以終止循環(huán)的運行,然后繼續(xù)執(zhí)行循環(huán)之后的代碼(如果循環(huán)之后有代碼的話)。
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 命令會終止當前的循環(huán),然后從下一個值繼續(xù)運行。
<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 聲明專門遍歷數(shù)組內的元素。
For…In 聲明用于對數(shù)組或者對象的屬性進行循環(huán)操作。
for … in 循環(huán)中的代碼每執(zhí)行一次,就會對數(shù)組的元素或者對象的屬性進行一次操作。
語法:
for (變量 in 對象) { 在此執(zhí)行代碼 }
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取代即可.