汗,看的我连什么是语句什么是表达式都迷糊了。不过总体感觉清晰了,赞。
【 在 modico ().net() 的大作中提到: 】
: 标 题: Re: 这段js代码里面的括号是什么意思呢
: 发信站: 水木社区 (Tue Mar 9 17:20:45 2010), 站内
:
: 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()
: : {
: : ...................
:
: --
: 软件变慢的速度要快于硬件变快的速度
:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 218.241.172.*]
--
FROM 222.29.20.*