【问题标题】:Javascript: variable = variable2 = variable3Javascript:变量 = 变量 2 = 变量 3
【发布时间】:2016-04-19 07:44:44
【问题描述】:

我不知道如何描述这一点,但这在 Javascript 中不会出错......但这并不意味着它是一个好主意,并且除了它(或不是)之外的所有 Javascript 版本。

想法?

var r = 'r';
var t = 't';
var s = 's';

s = r = t;

// s = 't'
// r = 't'
// t = 't'

这似乎并不标准,开发人员可能更难遵循,但真的有任何用例吗?

【问题讨论】:

标签: javascript variables variable-assignment assignment-operator


【解决方案1】:

这是有效的,因为 r=t 的赋值返回了赋值。所以是的,您可以根据返回值无限分配值。

【讨论】:

    【解决方案2】:

    将作业链接在一起是一种相当标准的做法。它甚至还有一个名字叫"chain assignment"。我不知道您从哪里得到“这是糟糕的编码”的想法,但这绝对是正常现象。这是可行的,因为分配返回分配的值。

    这通常用于初始化变量:

    var a, b, c;
    a = b = c = 5;  //one use case
    //same as
    a = (b = (c = 5)));
    

    这似乎并不标准,开发人员可能更难以遵循。

    如果开发者不能理解这个表达,我不知道该说什么。

    【讨论】:

      【解决方案3】:

      我一直在我的模块中使用它来创建函数的本地快捷方式(用于模块内):

      var doSomething = module.exports.doSomething = ()=>{};
      

      javascript 返回值的方式很好。在像 python 这样的语言中,你必须经常这样做:

      def do_something(ctx):
          ctx.update({
              'entry': entry,
              'section': 'select_category'
          })
          do_something_else(ctx)
      

      而不是

      def do_something(ctx):
          do_something_else(ctx.update({
              'entry': entry,
              'section': 'select_category'
          })
      

      因为更新方法不返回任何东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-26
        • 2021-07-02
        相关资源
        最近更新 更多