一个挺有意思的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脚本的性能的几个注意事项
Dec 22 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
没有document.getElementByName方法
Aug 19 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
Jan 15 Javascript
在JavaScript中处理字符串之link()方法的使用
Jun 08 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
node.js使用express框架进行文件上传详解
Mar 03 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
layui 地区三级联动 form select 渲染的实例
Sep 27 Javascript
vue使用openlayers实现移动点动画
Sep 24 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 Javascript
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+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
js 设置选中行的样式的实现代码
2010/05/24 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
python基础练习之几个简单的游戏
2017/11/10 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
python ubplot使用方法解析
2020/01/10 Python
Python批量启动多线程代码实例
2020/02/18 Python
python基于socket函数实现端口扫描
2020/05/28 Python
信息管理员岗位职责
2013/12/01 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
财产公证书样本
2014/04/04 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
公司表扬稿范文
2015/05/05 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
Python几种酷炫的进度条的方式
2022/04/11 Python