javascript 写法问题

javascript 写法问题

我在看一个npm包的源码时,看到一个写法,但不知道这个写法有什么特别的,或者有什么好处

function foo(p){
  return p + 1
}

// 以下写法
const tmp = (0, foo)(123)

// 和
const tmp = foo(123)

// 有什么区别?或者有什么好处?

(0, foo)就是一个逗号表达式,返回值就是foo函数
你这段代码里没区别,但是如果foo是一个对象里的方法的话(0, foo)可以更改this指向(一般是让其指向window)

在浏览器控制台敲了个demo,大概意思一下

img

你看的源码应该是 打包后自动生成这样的代码的吧,应该不是本身写的代码
我猜的哈,具体并不确定

https://www.cnblogs.com/ggll611928/p/13266576.html?utm_source=tuicool
有点像函数 柯里化

效果一样,不同写法

(0, foo)用的就是一个逗号表达式,会返回最后一个,有时候为了更改this指向,会这么写