在一次运行中分配并返回变量

时间:2015-12-08 14:05:58

标签: javascript

这些结构是否相同而没有副作用?

// First variant
var a;
var assignVar = function(){ return a = 10; }
var b = assignVar()

// Second variant
var a;
var assignVar = function(){ a = 10; return a; }
var b = assignVar()

我可以为变量赋值并同时返回吗?或者我应该先分配它,然后返回?是否有任何警告和不同的行为?

3 个答案:

答案 0 :(得分:3)

是的,这是安全的,两个功能都是等效的。几乎所有语言的赋值运算符都被严格定义为返回指定的值,我所知道的唯一例外是C ++这样的语言,你可以重载运算符。在Javascript赋值中,始终“返回”指定的值。

相关权限是ECMAScript 2015 specification section 12.14.4,其中所有控制路径都以“Return rval”退出,这是操作员右侧的部分。

答案 1 :(得分:0)

你可以先做第一种方式。我会把它包裹在parens中,所以你和其他人知道你正在对变量做些什么,你会看两次。

(function(){ return (a = 10) })()

答案 2 :(得分:0)

我最好这样做

var a = (function(){ return 10; }())