js中逗号hack表达式用法

js中逗号hack表达式用法
敲代码

js中发现了一个有趣但可能有用的东西,它与逗号运算符有关。

我们主要使用逗号分隔对象或数组项中的属性。

然而,我从来没有注意过它在表达式中的用法。

例如:

('a', 'b')

这两个表达式(在本例中是字符串)都被计算,这将返回最后一个元素,即最后一个逗号之后的表达式。在本例中,它返回“b”。

可以将值赋给变量,如下所示:

const letter = ('a', 'b')
letter === 'b' //true

如果只是用简单值,这几乎没有任何意义。

不过当我们可以运行任何表达式,包括函数调用,而不是计算“a”字符串,这将非常实用。

思考下面的代码:

const doStart = () => {console.log(started)}
let started = false

const start = (
  started = true,
  doStart
)

现在start是对doStart()函数的引用,但是当您调用start()时,started变量为true:

start() // true

你甚至还可以使用两个以上的表达式:

const start = (
  started = true,
  stopped = false,
  doStart
)

这个“技巧”可以用来修饰一个你无法控制的函数,但是为了简单起见,最好还是创建一个新函数。

(0)
上一篇 2020年7月2日 下午12:56
下一篇 2020年7月4日 下午6:13

相关推荐

发表回复

登录后才能评论