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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
JavaScript Cookie的读取和写入函数
Dec 08 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
Feb 19 Javascript
js获取url中指定参数值的示例代码
Dec 14 Javascript
jquery单击事件和双击事件冲突解决方案
Mar 02 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
AngularJS基础 ng-cloak 指令简单示例
Aug 01 Javascript
基于js实现checkbox批量选中操作
Nov 22 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
node.js处理前端提交的GET请求
Aug 30 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中设置时区方法小结
2012/06/03 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
python实现爬取图书封面
2018/07/05 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
体育专业求职信
2014/07/16 职场文书
村委会贫困证明范文
2014/09/21 职场文书
财务工作失职检讨书
2014/11/21 职场文书
客房部经理岗位职责
2015/02/02 职场文书
python flask框架快速入门
2021/05/14 Python
使用python创建股票的时间序列可视化分析
2022/03/03 Python
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python