查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
(function foo(){}); // 函数表达式:包含在分组操作符内
(var x = 5); // 分组操作符,只能包含表达式而不能包含语句:这里的var就是语句,所以是错误的写法
({x:"lala"})//这样写是合法的,因为分组操作符,也就是这对小括号,会让解析器强制将JSON的花括号解析成表达式而不是代码块。
{ "x": 5 }; // "{" 和 "}" 做解析成代码块
({ "x": 5 }); // 分组操作符强制将"{" 和 "}"作为对象字面量来解析
2.函数声明只能出现在程序或函数体
内。从句法上讲,它们 不能出现在Block(块)({ ... })中,例如不能出现在 if、while 或 for 语句中。
1 // 千万别这样做! 2 // 因为有的浏览器会返回first的这个function,而有的浏览器返回的倒是第二个 3 4 if (true) { 5 function foo() { 6 return 'first'; 7 } 8 } 9 else { 10 function foo() { 11 return 'second'; 12 } 13 } 14 foo(); 15 16 // 相反,这样情况,我们要用函数表达式 17 var foo; 18 if (true) { 19 foo = function() { 20 return 'first'; 21 }; 22 } 23 else { 24 foo = function() { 25 return 'second'; 26 }; 27 } 28 foo();
如果应用定名函数表达式,在调用的时候不要用函数的标识符。及var a = function b(){};在调用的时候应用a();来调用,而不是应用b()来调用。因为为不同的浏览器对函数表达式的解析方法不一样.
由于编程经验尚浅,文章里面有些部份看的晕晕的
文章结束给大家分享下程序员的一些笑话语录: 面试官:熟悉哪种语言
应聘者:JAVA
面试官:知道什么叫类么
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
面试官:知道什么是继承么
应聘者:我是孤儿没什么可以继承的
面试官:知道什么叫对象么?
应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
面试官:知道多态么?
应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??