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 学习笔记(一) 一些基础知识
Oct 13 Javascript
javascript instanceof 内部机制探析
Oct 15 Javascript
setTimeout()递归调用不加引号出错的解决方法
Sep 05 Javascript
jQuery制作网页版选项卡
Jul 28 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
vue mixins组件复用的几种方式(小结)
Sep 06 Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
小程序实现搜索框
Jun 19 Javascript
Vue form表单动态添加组件实战案例
Sep 02 Javascript
基于element-ui封装表单金额输入框的方法示例
Jan 06 Javascript
Angular CLI发布路径的配置项浅析
Mar 29 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程序之die调试法 快速解决错误
2009/09/17 PHP
php ios推送(代码)
2013/07/01 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
JS模拟多线程
2007/02/07 Javascript
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
体育教育专业自荐信范文
2013/12/20 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
房屋出售授权委托书
2014/10/12 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
python开发制作好看的时钟效果
2022/05/02 Python