function method(){}与var method = function(){}的区别
2015-06-18 17:17
447 查看
简单的代码:
为什么调用方法method01能正常运行,而调用方法method02却会报错呢?
首先,你要明确的知道method01为一个函数对象,而method02为一个变量,它指向于另一个函数对象。根据上一节的内容,在'活动对象'完成的'变量实例化'(Variable Instatiation)的过程中,对函数method01进行了正常的'预解析',而对于变量method02解析为undefined值,当进入到执行代码的环节时,因为method02的调用在其计算函数表达式之前,因此将undefined当作方法调来用,必然会报错。解决方案比较简单,就是将var
method02=function(){...}放到其method02()的调用之前就可以了或者是用函数声明的方式定义函数(function method(){...})。
注:计算函数表达式就是指程序执行到var method02 = function(){...}。method02此时真正指向一个函数对象。因为在'预解析'时,method02只被赋于了undefined.
1 2 3 4 5 6 7 8 9 10 11 12 | function say(){ method01();//method01 method02();//error function method01(){ alert('method01'); } var method02 = function(){ alert('method02'); } } say(); |
首先,你要明确的知道method01为一个函数对象,而method02为一个变量,它指向于另一个函数对象。根据上一节的内容,在'活动对象'完成的'变量实例化'(Variable Instatiation)的过程中,对函数method01进行了正常的'预解析',而对于变量method02解析为undefined值,当进入到执行代码的环节时,因为method02的调用在其计算函数表达式之前,因此将undefined当作方法调来用,必然会报错。解决方案比较简单,就是将var
method02=function(){...}放到其method02()的调用之前就可以了或者是用函数声明的方式定义函数(function method(){...})。
注:计算函数表达式就是指程序执行到var method02 = function(){...}。method02此时真正指向一个函数对象。因为在'预解析'时,method02只被赋于了undefined.
相关文章推荐
- iOS 模拟器小技巧
- Node.js学习--基础知识(9)--HTTP服务器
- Retrofit源码解析
- a为什么做java的web开发我们会使用struts2,springMVC
- 解决 SharePoint 2013 An update conflict has occurred, and you must re-try this action
- 一致性 hash 算法
- css之float深入剖析
- Cocos2d-x源码粗析1.base-nodes
- easyui进度条函数使用例子
- Windows 7/8各版本支持最大内存容量
- 数据结构实验之队列一:排队买饭
- Android--ListView点击Item展开的实现
- 从Eclipse到Intellij
- 数据结构实验之队列一:排队买饭 分类: 栈和队列 2015-06-18 17:16 14人阅读 评论(0) 收藏
- LV条带化
- 解析java内存原型
- 分享一下eclipse/Myeclipse常用的快捷键
- iOS中SQLite的使用
- 精准调度,高速体验:移动防劫持D+详解
- PYTHON基础