希望有大牛分析以下区别:

cutemurphy 2012-03-04 12:00:34
希望有大牛分析以下区别:

(function( ){
alert(1);
})()

===================================
(function( ){
alert(1);
}( ))
===============================================
以及以下三个的结果和它们的不同:
function( ){
}( )

function( ){
}(1)

(function( ){
})(1 )
...全文
165 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cutemurphy 2012-03-04
  • 打赏
  • 举报
回复
需要细节分析
Acesidonu 2012-03-04
  • 打赏
  • 举报
回复
function a() {} //定义一个具名函数
function(){} //定义一个匿名函数
(function(){})(); //定义一个匿名函数并立即执行他
(function(){})(1); //定义一个匿名函数并立即执行他,后面小括号里是传递的参数
其他的都是错误的语法
cutemurphy 2012-03-04
  • 打赏
  • 举报
回复
绝非空想。3楼讨论得就蛮好
Acesidonu 2012-03-04
  • 打赏
  • 举报
回复
不知道楼主是从哪里看到的还是凭空想象的,最好还是买本js书籍认真学习学习。
cutemurphy 2012-03-04
  • 打赏
  • 举报
回复
如果你确定是死规定
请找到依据。。
否则如果自己都不清楚 不要轻易下判断
豆虫 2012-03-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cutemurphy 的回复:]
function( ){
}( )
为什么这里的()
不能看成是调用呢
而是所谓的强运算

而这里的第2个括号
(function( ){
})( )
又变成是 调用
[/Quote]
1+1=2 能解释么?这跟算术是一个道理,死规定。
cutemurphy 2012-03-04
  • 打赏
  • 举报
回复

function( ){
}( )
为什么这里的()
不能看成是调用呢
而是所谓的强运算

而这里的第2个括号
(function( ){
})( )
又变成是 调用
lsw645645645 2012-03-04
  • 打赏
  • 举报
回复
你没看到他们都没名字啊,
不就是匿名定义么,有什么细节好分析的啊。
豆虫 2012-03-04
  • 打赏
  • 举报
回复
function( ){
}( )
相当于 functin aaa(){} aaa();
function( ){
}(1)
语法错误
(function( ){
})(1 )

相当于 function aaa(arg1){} aaa(1);
最后一个菜鸟 2012-03-04
  • 打赏
  • 举报
回复

function( ){
}(1)

没有语法错误,js中;可以省略。所以以上语法是一个函数定义和(1)表达式。


(function( ){
alert(1);
})()

函数定义外的()是运算符,返回函数本身,然后后面()表示函数调用。


(function( ){
alert(1);
}( ))

里面的()表示函数调用,外面()是强制运算符,返回调用结果。


function( ){
}( )

中function( ){
}被作为独立的函数定义,后面()没有办法解释,所以无法通过语法检测。


function( ){
}(1)

与上面的解释相似,只是(1)是可以解释成表达式的。所以上面的语句可以解释为
function( ){
};
(1);


(function( ){
})(1 )

应该与上面相同,空格应该会被忽略。

以上内容是参考《javascript语言精髓与编程实践》p61(ps :挺好的一本书)

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧