一个挺有意思的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 相关文章推荐
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 Javascript
javascript 面向对象编程  function是方法(函数)
Sep 17 Javascript
Javascript异步编程模型Promise模式详细介绍
May 08 Javascript
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
微信小程序 教程之条件渲染
Oct 18 Javascript
通过js修改input、select默认字体颜色
Apr 19 Javascript
微信小程序图片自适应支持多图实例详解
Jun 21 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
Oct 20 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
Vuex实现数据增加和删除功能
Nov 11 Javascript
vue键盘事件点击事件加native操作
Jul 27 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数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
python进阶教程之循环对象
2014/08/30 Python
Python语言描述随机梯度下降法
2018/01/04 Python
python安装twisted的问题解析
2018/08/21 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
python实现FTP循环上传文件
2020/03/20 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
交通事故检查书范文
2014/01/30 职场文书
《正比例》教学反思
2016/02/23 职场文书
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL