一个挺有意思的Javascript小问题说明


Posted in Javascript onSeptember 26, 2011

先来看以下3段代码

var firstName = "Mark"; 
(function DisplayFirstName() { 
console.log(firstName); 
})();//必然输出 Mark 
var lastName = "Aut"; 
(function DisplayLastName() { 
var lastName = "Bru"; 
console.log(lastName); 
})();//必然输出 Bru, 本地作用域的优先级高于全局作用域 
//那么下面这段代码呢? 
var lastName = "Aut"; 
(function DisplayLastName() { 
console.log(lastName); 
var lastName = "Bru"; 
console.log(lastName); 
})();//谁能猜出结果是什么?

这个输出的结果是:
LOG: undefined
LOG: Bru

这出乎了我的意料, 我原来以为应该是 "Aut" 和 "Bru"的
我原来的理解是: 在程序第一个输出lastName的时候, 程序没有找到本地声明的lastName变量,所以使用了全局的lastName定义, 第二次的时候才使用本地变量的值
(因为在我的概念里,javascript是解释型语言,一句一句的......执行)

看到这个结果,看来javascript的执行并不都是顺序的..
目前为止,就我的猜测,javascript执行应该是先做语法分析,然后顺便分析完成了变量表(本地和全局)
然后才开始顺序执行一行行脚本
还请各位javascript高手解惑

Javascript 相关文章推荐
javascript同步Import,同步调用外部js的方法
Jul 08 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
与Math.pow 相反的函数使用介绍
Aug 04 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
jquery实现公告翻滚效果
Feb 27 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
JS实现从连接中获取youtube的key实例
Jul 02 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
Jquery之Ajax运用 学习运用篇
Sep 26 #Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 #Javascript
在Windows上安装Node.js模块的方法
Sep 25 #Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 #Javascript
利用JS自动打开页面上链接的实现代码
Sep 25 #Javascript
javascript权威指南 学习笔记之javascript数据类型
Sep 24 #Javascript
最简单的js图片切换效果实现代码
Sep 24 #Javascript
You might like
php验证是否是md5编码的简单代码
2014/04/01 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
js表格分页实现代码
2009/09/18 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
原生js实现抽奖小游戏
2019/06/27 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
Numpy array数据的增、删、改、查实例
2018/06/04 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
Python常见的pandas用法demo示例
2019/03/16 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
快速创建python 虚拟环境
2020/11/28 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
人力资源管理毕业生自荐信
2013/11/21 职场文书
办理护照介绍信
2014/01/16 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
文明社区申报材料
2014/08/21 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
中秋客户感谢信
2015/01/22 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
公司人事管理制度
2015/08/05 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers