一个挺有意思的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 相关文章推荐
用JS操作FRAME中的IFRAME及其内容的实现代码
Jul 26 Javascript
Extjs ajax同步请求时post方式参数发送方式
Aug 05 Javascript
jQuery 判断图片是否加载完成方法汇总
Aug 10 Javascript
javascript函数命名的三种方式及区别介绍
Mar 22 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
详解使用angular的HttpClient搭配rxjs
Sep 01 Javascript
node.js读取Excel数据(下载图片)的方法示例
Aug 02 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
推荐15个最好用的JavaScript代码压缩工具
Feb 13 Javascript
Angular请求防抖处理第一次请求失效问题
May 17 Javascript
JavaScript 中的六种循环方法
Jan 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也能干大事 随机函数
2015/04/14 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
关于js类的定义
2011/06/28 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
如何让你的JS代码更好看易读
2017/12/01 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
个人求职简历的自我评价范文
2013/10/09 职场文书
综合实践活动方案
2014/02/14 职场文书
校企合作协议书
2014/04/16 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
2014组织生活会方案
2014/05/19 职场文书
企业宣传口号
2014/06/12 职场文书
干部个人对照检查材料
2014/08/25 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js