为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2019-03-07 18:14:36
在js中常使用立即执行表达式,如:(function(name){console.log(name)})("123")// 输出"123"虽然这种用法见得很多,但有点迷糊(function(){})中的()是什么?是一个操作符吗?它的作用又是什么?
查看完整描述

5 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

谢谢各位的认真解答,综合各位的答案,(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(){}当成表达式,而不是函数声明去处理。


再次感谢!


查看完整回答
反对 回复 2019-03-18
?
FFIVE

TA贡献1797条经验 获得超6个赞

(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)


查看完整回答
反对 回复 2019-03-18
?
精慕HU

TA贡献1845条经验 获得超8个赞

调用运算符:跟在任何产生一个函数值的表达式之后的一对圆括号()
表达式内可包含零个或多个用逗号隔开的表达式。 每个表达式产生一个参数值

在 《JavaScript 语言精粹》里面,表示每个函数在创建时会附加两个隐藏属性,函数的上下文和实现函数行为的代码(JavaScript创建一个函数对象时,会给给对象设置一个“调用”属性)。当JavaScript调用一个函数时,可以理解为调用此函数的“调用”属性。 可以跟上面的 () 联系在一起。


查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 1561 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信