3

通常,我定义和调用这样的函数 - 特别是当我们使用标志时:

function cat(doMeon, doCloseEyes)
{
  if (doMeon) console.log("Meon...");
  if (doCloseEyes) console.log("Hmm, I closed my eyes..."); 
}
...
// And then call, using flags. Names are temporary, only for readability
cat(doMeon=true, doCloseEyes=true);

请注意,我们可以只执行“cat(true, true)”,但这会破坏可读性。

但是这引入的问题是这两个变量现在在全局范围内。我们不应该污染全球范围。但我们不能这样做:

// Doesn't work...
cat(var doMeon=true, var doCloseEyes=true);

有没有一种方法可以在这里用作最佳实践?(注意:在外部定义这些变量并不是一个好主意。)

4

2 回答 2

2

传递具有可读性的参数的一种方法是将包含每个参数的对象作为命名属性传递:

IE

cat({
    doMeon: true,
    doCloseEyes: true
});

在函数内部,您可以执行以下操作:

function cat(_props) {
    if (_props.doMeon) console.log("Meon...");
    if (_props.doCloseEyes) console.log("Hmm, I closed my eyes..."); 
    ....
}
于 2013-03-28T03:41:58.743 回答
0

您可以创建两个函数:

function catDoMeon()
{
  console.log("Meon...");
}

function catDoCloseEyes()
{
  console.log("Hmm, I closed my eyes..."); 
}

catDoMeon();
catDoCloseEyes();
于 2013-03-28T03:46:47.673 回答