当javaScript从入门到提高前需要注意的细节:函数部分(3)
[html]
alert(fun3 === fun4);
上面的结果是无论如何都超过了初学者的想法:在IE中式false,在Chrome或FireFox中是错误
对于Chrome或FireFox原因比较明显,也就是说,fun4被赋值后就立即抛弃了
[html]
alert(typeof fun3); //function
alert(typeof fun4); //undefined
在IE中
[html]
alert(typeof fun3); //function
alert(typeof fun4); //function
这一点是IE的错误,但是从结果可以得知:命名函数表达式的名字在外部作用域是无效的。哪怕如下,你执行下fun3还是不行的www.2cto.com
[html]
var fun3 = function fun4() {//声明一个变量指向一个非匿名的函数表达式
}
fun3();
alert(typeof fun3); //function
alert(typeof fun4); //undefined
虽然IE是有错误,但是IE透露了一个信息,非匿名的函数表达式由于函数有名称,被优先的分配了。看看我们最上面的函数定义声明的案例中的fun4
这么一来,如果你一不小心的话
[html]
function fun1() {
alert("A");
}
var count = 2;
var input = 10;
switch (input) {
case 5:
function fun1() {
alert(5);
}
break;
case 10:
if (count % 2 == 0) {
function fun1() {
alert("odd");
}
}
else {
function fun1() {
alert("even");
}
}
}
fun1();
这些代码的执行会不会出乎你的意料呢?注意上面的代码在不同的浏览器中得到的是不同的。再看看下面的代码
[html]
var fun1 = function(x) {
if (x < 10) {
return function fun2() {
alert("min");
}
}
return function fun2() {
alert("max");
相关新闻>>
- Javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- 好好学一遍JavaScript 笔记(一)——基础中的基础
- 好好学一遍JavaScript 笔记(二)——encode、数组、对象创建
- 好好学一遍JavaScript 笔记(三)——StringBuffer、prototype
- 好好学一遍javaScript 笔记(四)——Attribute、HTML元素、文档碎
- 好好学一遍JavaScript 笔记(五)——正则表达式基础
- 好好学一遍JavaScript 笔记(六)——正则表达式基础二
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- 好好学一遍JavaScript 笔记(八)——冒泡型事件、捕获型事件
- Gridx入门
- 发表评论
-
- 最新评论 更多>>