这些结构是否相同而没有副作用?
// 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()
我可以为变量赋值并同时返回吗?或者我应该先分配它,然后返回?是否有任何警告和不同的行为?
答案 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; }())