博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
今天看到的xx的一道百度前端笔试题
阅读量:5876 次
发布时间:2019-06-19

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

以下是原文:

百度的前端面试题,代码如下:

 
var a=5;
function test(){
a=0;
alert(a);
alert(this.a);
var a;
alert(a);
}
test();
new test();

在Chrome上run了一下,结果是

0
5
0
0
undefined
0

前三个结果好说,但对于第五个结果undefined我很疑惑,关键的就是这一句:

alert(this.a);

我的理解是,当运行到new test()这一句的时候,this指向了test,那么this.a应该就是

a=0;

这一句里面的0啊!为什么是undefined呢?求解答啊求解答!

------------------------------------------------------------------------------------------------------------------------------------------

其实this还好理解,new test()时,里边的this指向的就是 new test()这个对象,

这样看吧var t=new test();那么test里边的this就指向t了,当alert(this.a)时,因为t本身没有a这个属性当然就是undefined啦,而博主把函数里边的局部变量理解成了它的属性,所以就想不通啦。局部变量和属性成员还是有本质区别的。

其实这里我想说的是test里边的一句var a  使得这段代码的运行结果大相径庭,在test函数里边先使用了a这个变量,然后再定义它的,var a让a变成了函数里边的一个局部变量,原来在函数里边的变量还可以先使用再定义!!!不过这种方式的用法还是不推荐吧,直接var a=0;干嘛弄得这么别扭呢

转载于:https://www.cnblogs.com/hust/archive/2011/05/10/2041877.html

你可能感兴趣的文章
thymeleaf 不检查html语法错误
查看>>
小菜学设计模式——单例模式
查看>>
搭建Maven私服(Nexus)
查看>>
Quartz2.x(包括1.x)开发(调度器数据保存在持久层)出现的问题
查看>>
HomeStead Nginx配置ThinkPHP5
查看>>
中小企业实施云计算ERP的一些对策
查看>>
带你走进java集合之HashMap
查看>>
高考来临,理科老师手中不能没有它!
查看>>
poj 1821 - dp,单调队列
查看>>
《编写可维护的 JavaScript》读书笔记第17章:文件精简和压缩
查看>>
悼念一代巨匠:苹果之父乔布斯的语录
查看>>
C89和C99标准比较
查看>>
[Android] [Java] 分享 Process 执行命令行封装类
查看>>
iOS使用自签名证书实现HTTPS请求
查看>>
mysql 常见问题
查看>>
PHP 简单方法
查看>>
深入理解Android(一):Gradle详解
查看>>
Excel批量导出
查看>>
visio 2010
查看>>
CENTOS流水账0002.1[MySQL安装]
查看>>