1

在 JavaScript 中,如果我想返回一个变量但不想修改它或将其泄漏到全局范围内,我可以像这样在一行上定义并返回它吗?

return var Foo = 'bar'

但是,我认为我在任何地方都没有看到这个,我更常见的是:

var Foo = 'bar'
return Foo

第一个有点多余,但这是不好的做法吗?

4

3 回答 3

6

好吧,你肯定需要在你想要的范围内声明变量。然后你可以设置值,并在一行中返回它:

var Foo; // Declares Foo in this scope, though this expression has no L-Value
return (Foo = 'bar'); // Sets Foo to 'bar' and returns the value of Foo

不过,您为什么要这样做是值得怀疑的。理想情况下,Foo将在某个父范围的其他地方声明。或者,您将返回一个包含Foo 值的新函数。

于 2013-10-02T19:45:46.437 回答
3

我不明白你为什么要这样做,因为一旦你return超出了范围

做就是了

return 'bar';
于 2013-10-02T19:46:51.500 回答
3

在不了解您要做什么的情况下提供有用的答案有点困难,但是:

return var Foo = 'bar'

不是有效的 JavaScript,所以你当然不能那样做。

我同意您的第二个示例是多余的-如果您只在返回时引用它,那么在函数中声明变量是没有意义的。消除冗余的方法是根本不声明变量:

function exampleFunction() {
    return 'bar';
}
于 2013-10-02T19:47:44.920 回答