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实现UTF8编码转换成gb2312编码
Dec 22 Javascript
js实时获取系统当前时间实例代码
Jun 28 Javascript
JavaScript的事件代理和委托实例分析
Mar 25 Javascript
js使用setTimeout实现定时炸弹的方法
Apr 10 Javascript
javascript中JSON对象与JSON字符串相互转换实例
Jul 11 Javascript
js文本框走动跑马灯效果代码分享
Aug 25 Javascript
关于使用js算总价的问题
Jun 23 Javascript
weui框架实现上传、预览和删除图片功能代码
Aug 24 Javascript
详解JavaScript栈内存与堆内存
Apr 04 Javascript
详解vuex之store源码简单解析
Jun 13 Javascript
React组件对子组件children进行加强的方法
Jun 23 Javascript
交互式可视化js库gojs使用介绍及技巧
Feb 18 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
mysql5详细安装教程
2007/01/15 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python实现端口检测的方法
2018/07/24 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
django实现日志按日期分割
2020/05/21 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
附答案的Java面试题
2012/11/19 面试题
职高毕业生自我鉴定
2013/10/21 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
公司活动总结范文
2014/07/01 职场文书
2014年度党员自我评议
2014/09/13 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python