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