在JavaScript中,如果我想返回一个变量但又不想修改它或将其泄漏到全局范围内,我可以在一行中定义并返回它吗?
return var Foo = 'bar'
但是,我认为我在任何地方都看不到这一点,我更常见的是:
var Foo = 'bar'
return Foo
第一个没那么多余,但这是不好的做法吗?
答案 0 :(得分:3)
好吧,你肯定需要在你想要的范围内声明变量。然后你可以设置这个值,并将它返回到一行:
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的值。
答案 1 :(得分:3)
我无法理解你为什么要这样做,因为一旦return
你超出范围。
只做
return 'bar';
答案 2 :(得分:3)
在不理解你想要做什么的情况下提供有用的答案有点困难,但是这个:
return var Foo = 'bar'
是无效的JavaScript,所以你当然不能这样做。
我同意你的第二个例子是多余的 - 如果你在返回它时只是引用它,那么在函数中声明一个变量就没有意义了。删除冗余的方法是不要声明变量:
function exampleFunction() {
return 'bar';
}