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 相关文章推荐
些很实用且必用的小脚本代码
Jun 26 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 Javascript
jquery下组织javascript代码(js函数化)
Aug 25 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
Jan 15 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
Jan 23 Javascript
js中判断用户输入的值是否为空的简单实例
Dec 23 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
Mar 27 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
Dec 17 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
Aug 22 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 Javascript
js实现筛选功能
Nov 24 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
第四节--构造函数和析构函数
2006/11/16 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
php继承的一个应用
2011/09/06 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
python异常和文件处理机制详解
2016/07/19 Python
python使用str &amp; repr转换字符串
2016/10/13 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python的多维空数组赋值方法
2018/04/13 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
实习医生自我评价
2013/09/22 职场文书
市场营销专业推荐信
2013/11/03 职场文书
员工拓展培训方案
2014/02/15 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书