Javascript:var = var = 函数

Posted

技术标签:

【中文标题】Javascript:var = var = 函数【英文标题】:Javascript: var = var = function 【发布时间】:2013-09-27 02:10:20 【问题描述】:

我确定这件事在某处重复,但我不知道要搜索什么。

所以,我一直在查看 Node.JS 应用程序并找到此代码并想知道它的作用。我试过搜索,但我不知道要搜索什么,所以我希望有人能给我解释一下。

init = refresh = function () 
    // code here..
;

我理解 1 等于,但为什么是 2?它是否会产生某种别名,以便可以使用 initrefresh 运行函数?

【问题讨论】:

变量赋值就是这样工作的,是的。 (a = ba 设置为 b 并计算为 b;它从右到左解析。) 基本上它所做的是将function()... 分配给initrefresh 【参考方案1】:

= 解析右侧,然后将结果分配给左侧。

这样做的结果与分配的结果相同。

因此将函数分配给initrefresh

【讨论】:

谢谢你,我现在只是在阅读代码(因为它对我来说是一门新语言),这对我来说是新事物..【参考方案2】:

Quentin 做得很好,告诉你它在做什么。 我只是想插话举个例子,你可能会使用它:

比如说你有一个对象:

var obj = 
    init: function() 
        var x = this.x = [1,2,3];
    
;

这允许您以两种不同的方式(通过 x 或 this.x)引用您的 x 变量。

现在你为什么要这样做? 两个主要原因。

    访问 x 比访问 this.x 更快(但您仍然需要在其他地方访问) 当必须在一个函数中多次读取/写入 x 次时,它会产生更易于阅读的代码。

这只是您使用它的另一个原因。

但在大多数情况下它只是别名,例如:forEach -> each

【讨论】:

【参考方案3】:

下面是使用运算符associativityprecedence的解释。

因此,查看来自 Mozilla 的 operator precedence 描述,当表达式包含多个具有相同优先级的运算符时,如

a OP b OP c

,然后检查该优先级是使用从右到左还是从左到右关联性。

a = b = c

javascript 中的赋值运算符是其优先级上唯一的运算符。

它具有从右到左的关联性

所以在a = b = c 中,首先评估b = c,将c 的值赋给b

然后表达式变为a = b

【讨论】:

以上是关于Javascript:var = var = 函数的主要内容,如果未能解决你的问题,请参考以下文章

JAVAscript里的var和function啥关系?

vars 变量预解析

javascript中var s=new fun; 和var s=new fun();有啥区别?

Javascript ES6'let'和'var' - 函数内部的意外行为,参数名称匹配重新声明的变量

javascript中var let const三种变量声明方式

javascript 变量声明有var与无var 的区别