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 相关文章推荐
用函数式编程技术编写优美的 JavaScript
Nov 25 Javascript
javascript (用setTimeout而非setInterval)
Dec 28 Javascript
根据选择不同的下拉值出现相对应的文本输入框
Aug 01 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
Oct 23 Javascript
js判断手机和pc端选择不同执行事件的方法
Jan 30 Javascript
JS实现仿FLASH效果的竖排导航代码
Sep 15 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
多种方式实现js图片预览
Dec 12 Javascript
Bootstrap表格使用方法详解
Feb 17 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 Javascript
详解Vue之事件处理
Jul 10 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中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
php处理复杂xml数据示例
2016/07/11 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
Vue中组件之间数据的传递的示例代码
2017/09/08 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
python的exec、eval使用分析
2017/12/11 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
Otel.com:折扣酒店预订
2017/08/24 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
业务员岗位职责范本
2013/12/15 职场文书
项目管理计划书
2014/01/09 职场文书
初中同学聚会感言
2014/02/11 职场文书
品质标语大全
2014/06/21 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
java开发双人五子棋游戏
2022/05/06 Java/Android