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的with语句使用方法
Sep 21 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
Apr 02 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 Javascript
jquery滚动条插件slimScroll使用方法
Feb 09 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 Javascript
零基础之Node.js搭建API服务器的详解
Mar 08 Javascript
Vue的路由及路由钩子函数的实现
Jul 02 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
Sep 04 Javascript
Vue实现多页签组件
Jan 14 Vue.js
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实现时间轴函数代码
2011/10/08 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
javascript实现时钟动画
2020/12/03 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
Python如何输出百分比
2020/07/31 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
Whistles官网:英国女装品牌
2020/08/14 全球购物
Linux常见面试题
2016/10/04 面试题
服装促销活动方案
2014/02/23 职场文书
银行授权委托书范本
2014/10/04 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
大学运动会加油稿
2015/07/22 职场文书