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中的escape及unescape函数的php实现代码
Sep 04 Javascript
jQuery 下拉列表 二级联动插件分享
Mar 29 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
Jan 11 Javascript
当jQuery1.7遇上focus方法的问题
Jan 26 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 Javascript
Jquery获取当前城市的天气信息
Aug 05 Javascript
js手动播放图片实现图片轮播效果
Sep 17 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
Dec 14 Javascript
javascript实现的图片预览功能
Mar 25 Javascript
spirngmvc js传递复杂json参数到controller的实例
Mar 29 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
JS前后端实现身份证号验证代码解析
Jul 23 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中使用Oracle数据库(4)
2006/10/09 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php输入数据统一类实例
2015/02/23 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Django REST framwork的权限验证实例
2020/04/02 Python
tensorflow常用函数API介绍
2020/04/19 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
六查六看个人剖析材料
2014/10/14 职场文书
2014年教研工作总结
2014/12/06 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
诚信承诺书
2015/01/19 职场文书
保护环境的宣传语
2015/07/13 职场文书
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python