当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入门
 
- 发表评论
 - 
				
 
- 最新评论 进入详细评论页>>
 





