Javascript学习笔记2 函数


Posted in Javascript onJanuary 11, 2010

就像我们可以写成这样的形式一样:

function Hello() { 
alert("Hello"); 
} 
Hello(); 
var Hello = function () { 
alert("Hello"); 
} 
Hello();

其实都是一样的。
但是当我们对其中的函数进行修改时,会发现很奇怪的问题。
<script type="text/javascript"> 
function Hello() { 
alert("Hello"); 
} 
Hello(); 
function Hello() { 
alert("Hello World"); 
} 
Hello(); 
</script>

我们会看到这样的结果:连续输出了两次Hello World。而非我们想象中的Hello和Hello World。
这是因为Javascript并非完全的按顺序解释执行,而是在解释之前会对Javascript进行一次“预编译”,在预编译的过程中,会把定义式的函数优先执行,也会把所有var变量创建,默认值为undefined,以提高程序的执行效率。也就是说上面的一段代码其实被JS引擎预编译为这样的形式:
<script type="text/javascript"> 
var Hello = function() { 
alert("Hello"); 
} 
Hello = function() { 
alert("Hello World"); 
} 
Hello(); 
Hello(); 
</script>

我们可以通过上面的代码很清晰地看到,其实函数也是数据,也是变量,我们也可以对“函数“进行赋值(重赋值)。当然,我们为了防止这样的情况,也可以这样:
<script type="text/javascript"> 
function Hello() { 
alert("Hello"); 
} 
Hello(); 
</script> 
<script type="text/javascript"> 
function Hello() { 
alert("Hello World"); 
} 
Hello(); 
</script>

这样,程序被分成了两段,JS引擎也就不会把他们放到一起了。
Javascript 相关文章推荐
Extjs入门之动态加载树代码
Apr 09 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
Mar 17 Javascript
JQuery+DIV自定义滚动条样式的具体实现
Jun 25 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
浅谈jQuery中height与width
Jul 06 Javascript
Javascript小技能总结(推荐)
Jun 02 Javascript
AngularJS教程之简单应用程序示例
Aug 16 Javascript
微信小程序 配置文件详细介绍
Dec 14 Javascript
BootStrap Tooltip插件源码解析
Dec 27 Javascript
jQuery.parseHTML() 函数详解
Jan 09 Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 Javascript
Javascript学习笔记1 数据类型
Jan 11 #Javascript
IE bug table元素的innerHTML
Jan 11 #Javascript
javascript instanceof 与typeof使用说明
Jan 11 #Javascript
javascript call方法使用说明
Jan 11 #Javascript
jQuery UI-Draggable 参数集合
Jan 10 #Javascript
将CKfinder整合进CKEditor3.0的新方法
Jan 10 #Javascript
js或css文件后面跟参数的原因说明
Jan 09 #Javascript
You might like
用PHP实现WEB动态网页静态
2006/10/09 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
PHP 错误处理机制
2015/07/06 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
python中的多线程实例教程
2014/08/27 Python
浅析python继承与多重继承
2018/09/13 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
python之yield和Generator深入解析
2019/09/18 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
房地产销售员的自我评价分享
2013/12/04 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
端午节活动策划方案
2014/03/09 职场文书
党员检讨书
2014/10/13 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书