js声明和表达式

来源:互联网 发布:淘宝代购耐克是正品吗 编辑:程序博客网 时间:2024/06/06 08:37

js声明和表达式

1.定义

函数声明:function 函数名(){}
函数表达式: function 函数名(可写可不写的)(){}   函数名写的属于命名函数表达式,不写的属于匿名函数表达式。

function aaa(){} : 函数声明
var a = function aaa(){} : 命名函数表达式
var a = function(){}  : 匿名函数表达式
以下都属于表达式
(function aaa(){})
~function aaa(){} 
-function aaa(){}
+function aaa(){}
!function aaa(){}

2.区别

a、 函数表达式可以直接后面加括号执行,而函数声明是不可以的。
b、 函数声明可以被提前解析出来的。
function aaa(){ alert(1); }();//浏览器报错
var a = function aaa(){ alert(1); }();//1
~function aaa(){ alert(1) }(); //1


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

aaa();//火狐、谷歌1;ie11以下是2,ie11是1。这是因为函数声明可以被提前解析出来的,浏览器不同解析方式不同。


if(true){
var a = function aaa(){
alert(1);
}
}
else{
var a = function aaa(){
alert(2);
}
}
a();//结果都是1,这种情况使用表达式


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


a();  //1   function
aaa();  //外面是找不到的,报错




(function aaa(){ alert(1) })
aaa();//报错

1 0