dofile会立即加载并执行一个文件。 require更为复杂;它保留了已经加载的模块及其返回结果的表格,以确保不会重复加载相同的代码。它还保留了一个模块加载器列表,用于处理加载模块,其中一个可以从dll/so文件中加载。 如果只是加载函数,则最好使用require来避免重复定义。