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 脚本将当地时间转换成其它时区
Mar 19 Javascript
Javascript 类与静态类的实现(续)
Apr 02 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
Dec 25 Javascript
使用js实现关闭js弹出层的窗口
Feb 10 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
js如何准确获取当前页面url网址信息
Sep 13 Javascript
微信小程序 navbar实例详解
May 11 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
May 12 Javascript
vant实现购物车功能
Jun 29 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
python简单文本处理的方法
2015/07/10 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
python 使用shutil复制图片的例子
2019/12/13 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
树莓派升级python的具体步骤
2020/07/05 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
送给他或她的礼物:FUN.com
2018/08/17 全球购物
幼儿教师师德承诺书
2014/05/23 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
Java中API的使用方法详情
2022/04/06 Java/Android
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python