博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个JS的面试题及其解析
阅读量:4570 次
发布时间:2019-06-08

本文共 494 字,大约阅读时间需要 1 分钟。

var tt='aa';

function test() {
alert(tt);
var tt = 'dd';
alert(tt);
test2();
}
function test2() {
alert(tt);
}
test();

 

执行test()的输出结果是 undefined dd aa 

第二个dd不难理解,但是第一个和第三个输出结果就要思考一番了。看了下资料,这其实和JS的解析器有关。调用对象初始化时,JS解析器会在相应的代码段里寻找var声明的变量,

然后在全局对象。所以当代码执行到alert(tt)时,解析器会先到test()内部找,找到了var tt这个局部变量,调用对象中创建相应的属性,此时它是未赋值的(undefined),当程序执行到var tt='dd'时,声明代码段才会给相应对象的属性赋值所以第二个输出是dd,当执行到test2内部,由于未改变过全局变量tt的值,在这里也没有定义局部变量tt,所以输出的是aa。

转载于:https://www.cnblogs.com/linjzong/archive/2012/10/10/2718332.html

你可能感兴趣的文章
[Linux] 进程
查看>>
Windows命令
查看>>
VBS常用
查看>>
---Ubuntu 下安装AS的问题汇总!
查看>>
images for flutter
查看>>
前端学习-jQuery
查看>>
学生管理系统(3:添加查询界面)
查看>>
身份验证(12)
查看>>
利用a标签特性解析地址(附加属性说明)
查看>>
C++面试经典题.......好紧张哦 要面试了
查看>>
工作第四天
查看>>
深入源码分析Linux进程模型
查看>>
算法第4章实践报告
查看>>
Topcoder srm 632 div2
查看>>
【转】正确的提问方式
查看>>
table表单中的属性
查看>>
MFC增强----任务对话框CTaskDialog类
查看>>
Reids 主从同步
查看>>
git基本命令
查看>>
话说笔试面试(1)
查看>>