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 相关文章推荐
js cookies 常见网页木马挂马代码 24小时只加载一次
Apr 13 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
浅析创建javascript对象的方法
May 13 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
Aug 05 Javascript
如何实现星星评价(jquery.raty.js插件)
Dec 21 Javascript
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
浅谈vue.js导入css库(elementUi)的方法
Mar 09 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
细述Javascript的加法运算符的具体使用
Oct 18 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 Javascript
详解VUE中的插值( Interpolation)语法
Oct 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
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
yii2安装详细流程
2018/05/23 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
python根据出生年份简单计算生肖的方法
2015/03/27 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
python 日期操作类代码
2018/05/05 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
python关于调用函数外的变量实例
2019/12/26 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
金士达面试非笔试
2012/03/14 面试题
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
校园网站的创业计划书范文
2013/12/30 职场文书
儿童生日会策划方案
2014/05/15 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
师德先进个人材料
2014/12/20 职场文书
职工年度考核评语
2014/12/31 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
大班下学期个人总结
2015/02/13 职场文书
2015政治思想表现评语
2015/03/25 职场文书
雷锋的观后感
2015/06/10 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python