js中()是什么?作用是什么?

在js中常使用立即执行表达式,如:


(function(name){console.log(name)})("123")

// 输出"123"

虽然这种用法见得很多,但有点迷糊(function(){})中的()是什么?是一个操作符吗?它的作用又是什么?


猛跑小猪
浏览 1562回答 5
5回答

Helenr

谢谢各位的认真解答,综合各位的答案,(function(){})中括号就是括号,它的作用是让浏览器把()里的内容当做表达式去解析,如果不用括号包起来的话,浏览器就会把function(){}当做是函数声明,但是函数声明没有名字,于是就会报错。提到下面这几种方法也可达到立即执行函数的效果:+function(name){console.log(name)}("123")-function(name){console.log(name)}("123")!function(name){console.log(name)}("123")0 || function(name){console.log(name)}("123")其中的+,-,!,0||等的作用应该也是让浏览器把function(){}当成表达式,而不是函数声明去处理。再次感谢!

FFIVE

(function fun(a,b,c){    //…})(1,2,3)这里的括号(1,2,3)中的参数对应的是前面函数的参数,当第一个括号的代码符合表达式规则时,前面的代码会被作为函数表达式来执行,所以最好在第一个函数表达式前面加上“;”分隔开,否则会报前一个表达式的值不是函数的错误。如:alert(1)(function(){})(),此时alert(1)先执行,由于符合立即执行的函数表达式规则,所以alert(1)的返回值会被作为函数,同时将后一个括号中的值作为参数传入,但alert(1)返回的是undefined,所以会报错。解决办法就是在alert(1)后面加上“;”或者“,”,将其拆分为两个表达式。立即执行还可以用(function fun(a,b,c){    //…}(1,2,3))!function fun(a,b,c){    //…}(1,2,3)void function fun(a,b,c){    //…}(1,2,3)

精慕HU

调用运算符:跟在任何产生一个函数值的表达式之后的一对圆括号()表达式内可包含零个或多个用逗号隔开的表达式。 每个表达式产生一个参数值在 《JavaScript 语言精粹》里面,表示每个函数在创建时会附加两个隐藏属性,函数的上下文和实现函数行为的代码(JavaScript创建一个函数对象时,会给给对象设置一个“调用”属性)。当JavaScript调用一个函数时,可以理解为调用此函数的“调用”属性。 可以跟上面的 () 联系在一起。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript