【JS】js里面函数这么写怎么理解

函数的写法是这样的:

(1, 2, 3, function(a, b){

console.log(a+b)

})(1, 2)

执行结果可以看出来是3,而且是一个匿名函数,这个也知道,但现在的问题是:前面的不定个数的参数有什么意义?因为你写几个都不影响执行结果


这种写法我说下出处,在webpack打包完之后的入口文件的代码中,就会有这样的写法

【JS】js里面函数这么写怎么理解


已解决,感谢各位,我再补充一个例子,大家会更加明白:

var i = 0;

(i++, function (a) {

console.log(a + i)

})(5)

执行结果

回答

(1, 2, 3, function(a, b){

console.log(a+b)

})

这是逗号表达式,具体看MDN的文档 https://developer.mozilla.org...

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

所以前面这个括号返回值就是最后的函数,

【JS】js里面函数这么写怎么理解

加上后面的括号,就是一个普通的函数调用了

【JS】js里面函数这么写怎么理解


关于在webpack中的用法,我也并不清楚,然后以"comma operator webpack"为关键词,在谷歌里搜了一下,搜索结果第一个是stackoverflow的一个问题https://stackoverflow.com/que...
其中的高票答案大概翻译是这样的:
这是为了给_test2.default _test4.default 正确的 this 指向(或者说,没有this),也就是说,把它们当成普通函数调用,而不是作为对象的方法。
比如这个场景:

var p = {

f : function() {

console.log(this)

},

x : "foo"

};

p.f(); // 这里this是p

(p.f)(); // 这里this还是p

(0, p.f)(); // 让this指向全局global(比如浏览器上就是指向window)

上面的逗号表达式比下面这种方法更简洁:

var unbound = p.f;

unbound();


今天没活干比较闲,关于this指向有人搞不清楚的可以提个问邀请我回答^_^

(1, 2, 3, fn)
是逗号表达式,逗号表达式的求解过程是:先计算表达式1的值,再计算表达式2的值,……一直计算到表达式n的值。最后整个逗号表达式的值是表达式n的值。
( function(){…} )()和是立即执行函数。
所以

(1, 2, 3, function(a, b){

console.log(a+b)

})(1, 2)

就是先计算1,2,3(可能是其他表达式)的值,再根据传入的参数执行函数

没有意义吧?这种写法还真没见过

以上是 【JS】js里面函数这么写怎么理解 的全部内容, 来源链接: utcz.com/a/88852.html

回到顶部