javascript – 在JS中调用(0,func)()的目的是什么?

前端之家收集整理的这篇文章主要介绍了javascript – 在JS中调用(0,func)()的目的是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > (1,eval)(‘this’) vs eval(‘this’) in JavaScript?                                    4个
我在code generated by Babel年从this source遇到过这个.它似乎在某种程度上保护了一个必需的功能.

(0,_utilities.validateNextState)(nextDomainState,reducerName,action);

我理解括号中的逗号语句如何丢弃0并返回validateNextState函数,但为什么不这样做:

_utilities.validateNextState(nextDomainState,action);

我的猜测是一种保护(如闭包保护范围,或者setTimeout使函数调用异步),但无法弄清楚它的用途是什么.

最佳答案
JavaScript的有时神秘的语义可能就是原因.表达方式

(0,_utilities.validateNextState)

当然评估对该函数的引用.但是,因为它位于带括号的子表达式中,所以在没有将_utilities对象识别为调用的上下文(此值)的情况下,将在外部进行函数调用.因此,在validateNextState函数内,这将是未定义的或对全局对象的引用,具体取决于“严格”模式状态.

我怀疑Babel这样做是因为在原始源代码中,对validateNextState()的调用就像是一个“裸”函数,而不是对象上的方法. Babel不知道(可能)这个值对于该特定函数是否重要,但它必须确保它被安全地调用.

原文链接:https://www.f2er.com/js/429226.html

猜你在找的JavaScript相关文章