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笔记 String类replace函数的一些事
Sep 22 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 Javascript
Vue.js每天必学之组件与组件间的通信
Sep 08 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
简单实现jquery隔行变色
Nov 09 jQuery
vue.js层叠轮播效果的实例代码
Nov 08 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
Jan 21 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 Javascript
Node.js + express基本用法教程
Mar 14 Javascript
element-ui table组件如何使用render属性的实现
Nov 04 Javascript
让你30分钟快速掌握vue3教程
Oct 26 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
python 如何引入协程和原理分析
2020/11/30 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
护理专业毕业生自荐书
2014/05/24 职场文书
司考复习计划
2015/01/19 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL