美文网首页
逗号操作符 & (0, function)()

逗号操作符 & (0, function)()

作者: holidayPenguin | 来源:发表于2017-04-01 16:36 被阅读0次

相关链接
mdn - Comma_Operator
stackoverflow - Why does babel rewrite imported function call to (0, fn)(…)?

概述

逗号操作符 对它的每个操作对象求值(从左至右),然后返回最后一个操作对象的值。

var 语句中的逗号不是逗号操作符,因为它不是存在于一个表达式中。

下面的代码,只有最后一个表达式被返回,其他的都只是被求值。

function myFunc () {
  var x = 0;

  return (x += 1, x); // the same of return ++x;
}

console.log((1, 2)); // Returns 2 in console
console.log((a = b = 3, c = 4)); // Returns 4 in console

疑问

这么去做有什么好处吗?难道就是改变我的写法?把return ++x改成return (x +=1, x)
答案当然不是

进阶

看下面的例子

var a = {
  foo: function() {
    console.log(this === window);
  }
};

a.foo(); // Returns 'false' in console
(0, a.foo)(); // Returns 'true' in console

看到没,一个输出false,一个输出true,why?

Now, in foo method, this is equal to a (because foo is attached to a). So if you call a.foo() directly, it will log false in console.
But, if you were call (0, a.foo)(). The expression (0, a.foo) will evaluate each of its operands (from left to right) and returns the value of the last operand. In other words, (0, a.foo) is equivalent to

function() {
  console.log(this === window);
}

Since this function no longer is attached to anything, its this is the global object window. That's why it log true in console when call (0, a.foo)().

看到没,由于(0, a.foo) 相当于

function() {
  console.log(this === window);
}

且这个函数不再附加到任何东西,它this是全局对象window,所以输出的是true。

相关文章

  • 逗号操作符 & (0, function)()

    相关链接mdn - Comma_Operatorstackoverflow - Why does babel re...

  • 逗号操作符(0,function)()

    无聊之际看了一下antd的源码,发现一段代码如下: 发现了 (0,function) 这个写法好像好像没见过,于...

  • JavaScript 逗号表达式笔记

    #JavaScript 逗号表达式笔记 ##逗号操作符是多元操作符,可以在一条语句中执行多个操作 1.逗号操作符可...

  • 逗号操作符

    基本概念: 使用逗号操作符可以在一条语句中执行多个操作。逗号操作符多用于声明多个变量;但除此之外,逗号操作符还可以...

  • Java之逗号操作符

    在说逗号操作符的时候我们要注意,逗号操作符不是逗号分隔符,逗号用作分隔符时用来分隔函数的不同参数。 Java里唯一...

  • 3.5.10 逗号操作符

    使用逗号操作符可以再一条语句中执行多个操作,如下面的例子所示: 逗号操作符多用于申明多个变量;但除此之外,逗号操作...

  • JS 中强大的操作符

    1.0 数值操作符_ 2.0 逗号运算符 , 3.0零合并操作符 ?? (||) 4.0可选链操作符?. (&&...

  • JavaScript基本概念之操作符——逗号操作符

    逗号操作符 使用都会操作符可以在一条语句中执行多个操作。

  • (0,fn) 逗号运算符

    源码中的(0,fn)() 逗号操作符 :对它的每个操作数求值(从左到右),并返回最后一个操作数的值 可以看到,...

  • 五 typeof &类型转化

    typeof操作符 number string boolean object undefined function...

网友评论

      本文标题:逗号操作符 & (0, function)()

      本文链接:https://www.haomeiwen.com/subject/yhwiottx.html