一个挺有意思的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脚本实现Web页面信息交互
Dec 21 Javascript
QQ邮箱的一个文本编辑器代码
Mar 14 Javascript
学习jquery必备 api中英文对照的chm手册 下载
May 03 Javascript
js中window.open()的所有参数详细解析
Jan 09 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
JavaScript中的Repaint和Reflow用法详解
Jul 27 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
Nov 04 Javascript
Javascript OOP之面向对象
Jul 31 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 Javascript
javascript读取文本节点方法小结
Dec 15 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
Oct 30 Javascript
JavaScript Image对象实现原理实例解析
Aug 26 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
Python实现的ini文件操作类分享
2014/11/20 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
css sprite简单实例
2016/05/23 HTML / CSS
什么是会话Bean
2015/05/14 面试题
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
管理部部长岗位职责
2013/12/05 职场文书
大学校庆邀请函
2014/01/11 职场文书
班组安全员工作职责
2014/02/01 职场文书
社区春季防火方案
2014/06/02 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技