loadfiledofile都会从文件中加载chunkloadfile只编译这段chunk,并且把编译好的chunk以函数的形式返回,但不运行,而dofile会运行这段chunk。此外,出现错误时,dofileraise error,而loadfile会返回错误代码dofile的代码类似这样:

function dofile (filename)
    local f = assert(loadfile(filename))
    return f()
end

load函数(Lua 5.1使用loadstring)与loadfile类似,只不过load是从字符串中加载chunk,而不是从文件中。需要注意的是,load加载的是chunk,也就是语句,不是表达式。如果要求表达式值的话,需要在前面加上return,这样就得到一个返回表达式值的语句。

Lua会把任何独立的chunk作为一个有变参参数的匿名函数的函数体。举个例子:load('a=1')返回等价于下面的表达式:

function (...) a = 1 end