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实现的页内搜索代码
May 23 Javascript
js实现DIV的一些简单控制
Jun 04 Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
jquery 删除cookie失效的解决方法
Nov 12 Javascript
IE6已终止操作问题的2种情况及解决
Apr 23 Javascript
微信小程序 天气预报开发实例代码源码
Jan 20 Javascript
JS实现一个简单的日历
Feb 22 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
Mar 26 Javascript
node.js制作一个简单的登录拦截器
Feb 10 Javascript
vue打包npm run build时候界面报错的解决
Aug 13 Javascript
nuxt.js写项目时增加错误提示页面操作
Nov 05 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中stream(流)的用法
2014/03/25 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
JavaScript中诡异的delete操作符
2015/03/12 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
深入了解js原型模式
2019/05/30 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python编写百度贴吧的简单爬虫
2015/04/02 Python
python脚本内运行linux命令的方法
2015/07/02 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
无工作经验者个人求职信范文
2013/12/22 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
农业项目建议书
2014/08/25 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
Python内置的数据类型及使用方法
2022/04/13 Python