【发布时间】:2015-03-24 20:51:50
【问题描述】:
我在遇到的几个脚本中都看到了这种约定。如果没有传递给函数,它应该初始化一个空的选项对象:
module.exports = function (opts) {
// Create empty options if none are passed
opts = opts || {};
};
但在阅读本文时我想知道,这不会创建一个全局 opts 变量吗?用var作为前缀不是更好吗?或者 commonjs 模块样式会阻止这种情况吗?
【问题讨论】:
-
全局变量是糟糕的做法。这个函数只关心
opts被传入。函数需要opts是一个对象,所以它要么使用传入的对象,要么创建自己的对象。 -
它不是全局的,因为你访问的是作为参数传入的局部变量
opts。 -
不,这个变量的作用域在它作为参数的函数内。
标签: javascript variables scope