區(qū)別:1、JavaScript的注釋代碼為“//”,lua的注釋代碼為“–”;2、JavaScript利用val來(lái)聲明全局變量不存在局部變量,lua則不需要直接定位為全局變量,local聲明則為局部變量。
本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。
lua與javascript的區(qū)別是什么
Lua和Javascript差異對(duì)比
Lua模擬器js方案
1.語(yǔ)法級(jí)模擬
lua與js語(yǔ)言差異
1.1注釋
js 為//,lua為–.
1.2變量
js利用val來(lái)聲明全局變量不存在局部變量,lua則不需要直接定位則為全局變量,local聲明則為局部變量。
1.3運(yùn)算符
-
js
+ – * / % ++ —
= += -= *= /= %=
支持字符串 +
txt1 = "what a very";
txt2 = "nice day";
txt3 =txt1 " " +txt2;
打印txt3輸出結(jié)果為"what a very nice day".
規(guī)則:
把數(shù)字與字符串相加,結(jié)果將成為字符串.
-
lua
二元:+ – * / ^ %
一元:-(負(fù)號(hào))
lua字符串拼接為..
如"Hello ".."World"拼接成Hello World
1.4關(guān)系操作符
-
js關(guān)系操作符
== ===(全等) != > < >= <=
-
lua關(guān)系操作符
< > <= >= == ~=(不等于)
1.5 邏輯運(yùn)算符
-
js
&& || !
-
lua
and or not
1.6 If …Else語(yǔ)句
-
js 類(lèi)c
if else
-
lua
if then else
if then
elseif then
else
end
一定要有end
1.7 Switch語(yǔ)句
lua不支持Switch 語(yǔ)句
1.8 消息框
-
js
警告框 alert("文本")
確認(rèn)框 prompt("文本","默認(rèn)值")
-
lua
擴(kuò)展支持警告框和確認(rèn)框
1.9 函數(shù)
-
js
function 函數(shù)名(參數(shù)) { 代碼... }
js帶{}類(lèi) c
-
lua
function 函數(shù)名( 參數(shù)) end
lua類(lèi)vb 腳本
2.0 For 循環(huán)
js:類(lèi)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默認(rèn)為1
for i =1,100 do print(i) end for i =1,100,2 do print(i) end
泛型For
泛型For循環(huán)通過(guò)一個(gè)迭代器(iterator)函數(shù)來(lái)遍歷所有值:
--打印數(shù)組a 的所有值 for i,v in pairs(a) do print(v) end
Lua基礎(chǔ)庫(kù)提供了ipairs,這是一個(gè)用于遍歷數(shù)組的迭代器函數(shù)。
在每次循環(huán)中i會(huì)被賦予一個(gè)索引值,同時(shí)v會(huì)被賦予一個(gè)對(duì)應(yīng)于
該索引的數(shù)組元素值。
---打印table t中所以的key for k in pairs(t) do print(k) end
2.1 While循環(huán)
js: 類(lèi)c
while (變量<=結(jié)束值) { 需執(zhí)行的代碼 } lua: i =1; while a[i] do print(a[i]) i = i+1; end
同時(shí)lua還支持repeat:支持repeat-until語(yǔ)句實(shí)現(xiàn)循環(huán).
repeat: line = io.read() until line~="" print(line)
上面的代碼:讀取line直到line不為""的時(shí)候結(jié)束,并打印此line的值。
2.2 Break 和 Continue
-
js:類(lèi)c
有兩種可以用在循環(huán)中的語(yǔ)句:break 和 continue
Break
break 命令可以終止循環(huán)的運(yù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ì)終止當(dāng)前的循環(huán),然后從下一個(gè)值繼續(xù)運(yùn)行。
<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 聲明專(zhuān)門(mén)遍歷數(shù)組內(nèi)的元素。
For…In 聲明用于對(duì)數(shù)組或者對(duì)象的屬性進(jìn)行循環(huán)操作。
for … in 循環(huán)中的代碼每執(zhí)行一次,就會(huì)對(duì)數(shù)組的元素或者對(duì)象的屬性進(jìn)行一次操作。
語(yǔ)法:
for (變量 in 對(duì)象) { 在此執(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:很簡(jiǎn)單直接用泛型的For取代即可.