ts2lua注意事项与区别

ts会编译到lua 所以实际执行时是执行的lua 在if()判断值为真假时、遍历对象和数组时遵循lua的规则

遍历区别: TS:

console.log("测试对象遍历 与js引擎的区别为 不会遍历出null值的key")
let obj = { a: "a值", b: "b值", c: "c值" }
obj.b = null;
for (let key in obj) {
    console.log(key + " => " + obj[key])
}



console.log("测试数组遍历 与js引擎的区别为 不会读取null值后面元素")
let arrays = ["a", "b", "c"]
arrays[1] = null
console.log("arrays.length=" + arrays.length)
for (let elem of arrays) {
    console.log(elem)
}

会编译为lua

print("测试对象遍历 与js引擎的区别为 不会遍历出null值的key")
obj = {a = "a值", b = "b值", c = "c值"}
obj.b = nil
for key in pairs(obj) do
    print((key .. " => ") .. tostring(obj[key]))
end
print("测试数组遍历 与js引擎的区别为 不会读取null值后面元素")
arrays = {"a", "b", "c"}
arrays[2] = nil
print("arrays.length=" .. tostring(#arrays))
for ____, elem in ipairs(arrays) do
    print(elem)
end


执行后控制台输出为:

测试对象遍历 与js引擎的区别为 不会遍历出null值的key
a => a值
c => c值
测试数组遍历 与js引擎的区别为 不会读取null值后面元素
arrays.length=1
a