函数声明与函数表达式
2016-07-23 22:26
351 查看
1.什么是函数声明,函数表达式
函数声明:function 函数名(){}
函数表达式:function 函数名(){}。函数名可写可不写。写出来的,就是命名函数表达式,不写的就是匿名函数表达式
例子:
function aaa(){};这就是函数声明
var a=function aaa(){};命名函数表达式
var a=function(){};匿名函数表达式
下面的都是函数表达式
(function aaa(){})
~function aaa(){}
-function aaa(){}
+function aaa(){}
!function aaa(){}
2.区别
(1)函数表达式可以直接后面加括号执行,而函数声明是不可以的。
(2)函数声明可以被提前解析出来
如下面的例子:在火狐浏览器中弹出的是1,但是在IE浏览器中弹出的是2,但是函数表达式就不存在这样的问题了。所以在这种情况下要用函数表达式。
利用函数表达式:
这时候弹出的都是1.
那么问题来了,为啥不可以用aaa();因为这个aaa()在外面调用的话,是找不到的,但是在内部是可以找到的。
对于函数表达式,不要用;
结果显示
总结:
函数声明与函数表达式的区别?
答案:在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。(函数声明提升)
函数声明: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(); //外面是找不到的*/
总结:
函数声明与函数表达式的区别?
答案:在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。(函数声明提升)
相关文章推荐
- 转:Java 动态代理的内部实现机制(大体意思正确,写的还行的一篇文章)
- java基础之访问修饰符
- 使用PXE+DHCP+apache+Kickstart无人值守安装linux服务器
- 使用IntelliJ IDEA开发SpringMVC网站(二)框架配置
- Winform使用外部浏览器解决webbrowser问题
- 将Centos的yum源更换为国内的阿里云源
- Android Fragment应用实战
- iOS 【简单将项目托管到git版本控制】
- HDU 1002 ????
- Java Web学习(18):JavaBean四大作用域
- php上传文件那些事
- 安装数据库提示无法解析机器名处理
- Java 注解的作用与使用
- 安卓项目之淘忆2.0的代码实现之注册功能(修改版)
- EasyDarwin开源流媒体云平台之语音对讲功能设计与实现
- bzoj3569
- 和为s的连续正整数数列 and 未排序正数数组中和为s的最长子数组长度
- 递推算法
- js数组与字符串
- 仿乐透购彩app(1)