一个挺有意思的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 Tab 导航插件 (23个)
Jun 11 Javascript
情人节之礼 js项链效果
Feb 13 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
Sep 18 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
Sep 24 Javascript
JavaScript实现一个空中避难的小游戏
Jun 06 Javascript
vue.js异步上传文件前后端实现代码
Aug 22 Javascript
Node.js中的cluster模块深入解读
Jun 11 Javascript
vue.js使用v-if实现显示与隐藏功能示例
Jul 06 Javascript
vue-cli项目修改文件热重载失效的解决方法
Sep 19 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在线打包程序源码
2008/07/27 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
php生成curl命令行的方法
2015/12/14 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
python赋值操作方法分享
2013/03/23 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
OpenCV 模板匹配
2019/07/10 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
python实现机器人卡牌
2019/10/06 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
keras输出预测值和真实值方式
2020/06/27 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
中学生自我评价范文
2014/02/08 职场文书
自主招生自荐信范文
2015/03/04 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
2015党建工作简报
2015/07/21 职场文书
Python软件包安装的三种常见方法
2022/07/07 Python