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

Assign and return a variable in one run

本文关键字:返回 变量 一个 运行 一次 分配      更新时间:2023-09-26

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

// 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()

我可以给一个变量赋值并同时返回它吗?还是应该先分配,然后返回?有什么警告和不同的行为吗?

是的,这是安全的,并且两个函数是等效的。几乎所有语言的赋值运算符都被严格定义为返回赋值,我所知道的唯一例外是在C++等语言中,你可以重载运算符。在Javascript中,赋值总是"返回"赋值。

相关权限是ECMAScript 2015规范第12.14.4节,其中所有控制路径都以"Return rval"退出,这是操作员右侧的部分。

您只需执行第一种方法即可。不过,我会用括号把它包起来,这样你和其他人就知道你对变量做了什么,你会看两遍。

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

我最好像这个一样做

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