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 相关文章推荐
模仿jQuery each函数的链式调用
Jul 22 Javascript
常用一些Javascript判断函数
Aug 14 Javascript
Js判断CSS文件加载完毕的具体实现
Jan 17 Javascript
jquery使用ul模拟select实现表单美化的方法
Aug 18 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
js+div+css下拉导航菜单完整代码分享
Dec 28 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 Javascript
Node.js常用工具之util模块
Mar 09 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
Aug 09 Javascript
Vue中对拿到的数据进行A-Z排序的实例
Sep 25 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
vue3.0搭配.net core实现文件上传组件
Oct 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中防止SQL注入实现代码
2011/02/19 PHP
PHP小教程之实现链表
2014/06/09 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
Python正则表达式匹配HTML页面编码
2015/04/08 Python
详解Python中find()方法的使用
2015/05/18 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
会计与审计专业大专生求职信
2013/10/03 职场文书
建筑学推荐信
2013/11/03 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
婚庆答谢词
2015/01/04 职场文书
论文致谢词范文
2015/05/14 职场文书
楚门的世界观后感
2015/06/03 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js