参见英文答案 > (1,eval)(‘this’) vs eval(‘this’) in JavaScript? 4个
我在code generated by Babel年从@L_404_2@遇到过这个.它似乎在某种程度上保护了一个必需的功能.
(0,_utilities.validateNextState)(nextDomainState,reducerName,action);
我理解括号中的逗号语句如何丢弃0并返回validateNextState函数,但为什么不这样做:
_utilities.validateNextState(nextDomainState,action);
最佳答案
JavaScript的有时神秘的语义可能就是原因.表达方式
原文链接:https://www.f2er.com/js/429226.html(0,_utilities.validateNextState)
当然评估对该函数的引用.但是,因为它位于带括号的子表达式中,所以在没有将_utilities对象识别为调用的上下文(此值)的情况下,将在外部进行函数调用.因此,在validateNextState函数内,这将是未定义的或对全局对象的引用,具体取决于“严格”模式状态.
我怀疑Babel这样做是因为在原始源代码中,对validateNextState()的调用就像是一个“裸”函数,而不是对象上的方法. Babel不知道(可能)这个值对于该特定函数是否重要,但它必须确保它被安全地调用.