Lua uses keyword...end blocks instead of {}.
Functions
JS
function sayHello(name) {
return name
}
sayHello("gan") Lua
function sayHello(name)
return name
end
return sayHello("gus") do .. while
JS
do {
// some code
} while (condition) Lua
repeat
-- some code
until not condition Variable
All local variables in lua use local instead of var, let, or const.
JS
var a = 1 let b = 2 const c = 3 d = 4 // global
Lua
local a = 1 local b = 2 local c = 3 d = 4 -- global
Equality
JS
let bool1 = "0" === 0 // false let bool2 = "0" == 0 // true
Lua
local bool1 = "0" == 0 -- false local bool2 = "0" == tostring(0) -- true
Negation Operator
JS
let isNotFrance = country != "france"
Lua
local isNotFrance = country ~= "france"
Ternary
JS
let name = condition ? "A" : "B"
Lua
local name = condition and "A" or "B"
-- safer
if condition then
name = "A"
else
name = "B"
end Null-Coalescing Operator
JS
let message = error.message ?? 'An unknown error occurred.'; let message = error.message ? error.message : 'An unknown error occurred.';
Lua
local message = error.message or 'An unknown error occurred.';
Multiple Expressions
JS
const variable = (someExpression1, someExpression2, ..., someExpressionN)
Lua
local variable = (function()
someExpression1
someExpression2
...
return someExpressionN
end)() Unicode
Lua only supports up to UTF-8
JS has String.fromCharCode()
JS
let a1 = "a"
let a2 = "\u{061}"
let a3 = "\u0061"
let a4 = String.fromCharCode(0x61) // hex
let a5 = String.fromCharCode(97) // dec Lua
local a1 = "a"
local a2 = "\u{061}"
local a3 = "\097"
local a4 = string.char(0x61) -- hex
local a5 = string.char(97) -- dec
local a6 = utf8.char(0x61) -- hex
local a7 = utf8.char(97) -- dec
Comments
// single line comment /* multiline comment */-- single line comment --[[ multiline comment --]]