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

Initializing a variable if it wasn't already passed to the function. Is this the right way?

我在遇到的几个脚本中都看到过这种约定。如果 none 传递给函数,它应该初始化一个空的选项对象:

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

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

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

does not create a global variable 因为它已经在你的函数范围内,因为它是函数的参数。

var test = function (opts) {
  // Create empty options if none are passed
  opts = opts || {};
};

test({ "test" : true });

alert(typeof opts); // opts is undefined