您好,匿名用户
随意问技术百科期待您的加入

javascript中一个关于括号的问题

0 投票

平时使用匿名函数时这种用法比较多见:
(function(){return "ok"})()
因为直接使用这样的代码 function(){return "ok"}() "()"先计算是会报错的,
但是也会看到这样的写法也是可行的:
(function(){return "ok"}())
这样又如何解释呢?

用户头像 提问 2012年 12月1日 @ Gemini 上等兵 (319 威望)
分享到:

1个回答

0 投票

我的理解是这个括号建立了一个新的作用域。(function(){return "ok"}())中的匿名函数已经不再是定义全局作用域定义的函数了。你可以用(fOk = function(){return "ok"}());fOk();来验证。但是函数的定义加载是优先于其调用的。但是在匿名函数中()运算符优先级更高,所以直接function(){//..}()会报错。但是用()将这段代码的作用于降级之后就可以了,应该因为这时函数调用运算符()执行前匿名函数就已经定义过了

用户头像 回复 2012年 12月1日 @ Leona 上等兵 (279 威望)
提一个问题:

相关问题

0 投票
1 回复 32 阅读
0 投票
1 回复 44 阅读
0 投票
1 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Kassadin 上等兵 (255 威望)
0 投票
1 回复 22 阅读
0 投票
1 回复 29 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...