- 主题:这段js代码里面的括号是什么意思呢
(//这个括号
function print_today()
{
haha = 'haha';
document.write(haha);
}
)//和这个括号是用来做什么的?
()//整体效果向个函数调用。
--
FROM 222.29.20.*
括起来呀。。
【 在 komac (密钥) 的大作中提到: 】
: (//这个括号
: function print_today()
: {
: ...................
--
FROM 123.113.98.*
。。。。。
为什么用括号括起来,再用个括号就能调用了呢?这点很疑惑。
【 在 shaolin (叶孤城|漫漫当爹路) 的大作中提到: 】
: 括起来呀。。
--
FROM 222.29.20.*
防止污染变量空间,好像是这么说吧
就是避免变量冲突,可能还有gc因素吧
【 在 komac (密钥) 的大作中提到: 】
: 。。。。。
: 为什么用括号括起来,再用个括号就能调用了呢?这点很疑惑。
--
FROM 219.136.32.*
匿名函数调用咯
很好用的
写一些组件的时候,非常好
【 在 komac (密钥) 的大作中提到: 】
: (//这个括号
: function print_today()
: {
: ...................
--
FROM 222.130.136.*
匿名函数?
function () { var a='hello';document.write(a)}()
没有function也能定义匿名函数?迷糊
【 在 lalula (Twin●逆天改命) 的大作中提到: 】
: 匿名函数调用咯
: 很好用的
: 写一些组件的时候,非常好
: ...................
--
FROM 222.29.20.*
类似于
a = function(){//blah}
(a)()
等价于
a()
【 在 komac (密钥) 的大作中提到: 】
: 匿名函数?
: function () { var a='hello';document.write(a)}()
: 没有function也能定义匿名函数?迷糊
: ...................
--
FROM 166.111.39.29
嗯,的确是这样的。
【 在 chumsdock (微笑服务) 的大作中提到: 】
: 类似于
: a = function(){//blah}
: (a)()
: ...................
--
FROM 222.29.20.*
1. function(){}();
2. (function(){})(); (比1多了一对圆括号)
3. function(a){}(1); (比1多了一个参数)
这3种里,除了1外,2和3的语法都是对的,但是意思不一样。
按照函数调用的语法形式,一个表达式(这里是函数表达式)后跟一对括号就算。
但为什么没有最前面的括号就没有函数调用的效果?
因为这个函数表达式同时也是函数声明,在编译层面上,是以函数声明和语句为
单位切分段落的,语句也包括表达式语句。按规范所述,function开头的,哪怕
形式符合表达式语句,也不算数,而是算作函数声明为优先。
所以,以上3条被编译器断句为:
1. function(){} (); //一个函数声明;接后面的 (); 部分语法错
2. (function(){})(); //一个调用表达式语句
3. function(a){} (1); //一个函数声明;接一个基本表达式语句。
第一个()的目的,就是构造一个基本表达式,消除函数声明的优先性。
【 在 komac (密钥) 的大作中提到: 】
: (//这个括号
: function print_today()
: {
: ...................
--
FROM 218.241.172.*
【 在 pizzaxp (aka 世界上第二可爱的人) 的大作中提到: 】
: 防止污染变量空间,好像是这么说吧
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~书上是这么写的
: 就是避免变量冲突,可能还有gc因素吧
~~~没听说 估计要去看JS引擎的GC原则..囧
--
FROM 180.77.14.*