如果变量尚未传递给函数,则初始化变量.这是正确的方法吗?

vkj*_*fef 2 javascript variables scope

我在我遇到的几个脚本中看到了这个约定.如果没有传递给函数,它应该初始化一个空选项对象:

module.exports = function (opts) {
  // Create empty options if none are passed
  opts = opts || {};
};
Run Code Online (Sandbox Code Playgroud)

但在阅读本文时我很想知道,这不会创建一个全局opts变量吗?用它作为前缀不是更好var吗?或者commonjs模块样式会阻止这种情况吗?

dec*_*eze 5

变量opts在函数签名中声明为参数.因此它的范围是功能.将变量声明为参数与var ..(加号,它是一个参数)具有基本相同的效果.您只是将新值重新分配给该变量.