码迷,mamicode.com
首页 > 其他好文 > 详细

函数声明与函数表达式

时间:2016-07-23 22:58:21      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

1.什么是函数声明,函数表达式

函数声明:function 函数名(){}

函数表达式:function 函数名(){}。函数名可写可不写。写出来的,就是命名函数表达式,不写的就是匿名函数表达式

例子:

function aaa(){};这就是函数声明

var a=function aaa(){};命名函数表达式

var a=function(){};匿名函数表达式

下面的都是函数表达式

(function aaa(){}) 

~function aaa(){}
-function aaa(){}
+function aaa(){}
!function aaa(){}

2.区别

(1)函数表达式可以直接后面加括号执行,而函数声明是不可以的。

function aaa(){alert(1);}();//函数声明不可以,结果有错误

var a=function aaa(){alert(1);}();//函数表达式可以,结果弹出1

~
function aaa(){alert(1);}();//函数表达式可以,结果也弹出1

(2)函数声明可以被提前解析出来

如下面的例子:在火狐浏览器中弹出的是1,但是在IE浏览器中弹出的是2,但是函数表达式就不存在这样的问题了。所以在这种情况下要用函数表达式。

if(true){
    function aaa(){
        alert(1);
    }
}
else{    
    function aaa(){
        alert(2);
    }
}

aaa();

利用函数表达式:

if(true){
    var a = function aaa(){
        alert(1);
    }
}
else{    
    var a = function aaa(){
        alert(2);
    }
}

a();//用aaa();可以吗?no!

这时候弹出的都是1.

那么问题来了,为啥不可以用aaa();因为这个aaa()在外面调用的话,是找不到的,但是在内部是可以找到的。

对于函数表达式,不要用;

var a=function aaa(){
    alert(1);
    alert(typeof aaa);
}
aaa();

结果显示

技术分享

var a = function aaa(){
    alert(1);
    alert(typeof aaa);  //内部是可以找到的
}

a();

/*aaa();  //外面是找不到的*/

技术分享

 

函数声明与函数表达式

标签:

原文地址:http://www.cnblogs.com/GumpYan/p/5699664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!