今天看到的xx的一道百度前端笔试题
2011-05-10 10:26
267 查看
以下是原文:
[/code]
[/code]
在Chrome上run了一下,结果是
[/code]
前三个结果好说,但对于第五个结果undefined我很疑惑,关键的就是这一句:
我的理解是,当运行到new test()这一句的时候,this指向了test,那么this.a应该就是
这一句里面的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;干嘛弄得这么别扭呢
JS的this真是好难理解啊,求高手指点
百度的前端面试题,代码如下:var a=5;
function test(){
a=0;
alert(a);
alert(this.a);
var a;
alert(a);
}
test();
new test();
[/code]
[/code]
在Chrome上run了一下,结果是
0
[code]5
0
0
undefined
0
[/code]
前三个结果好说,但对于第五个结果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;干嘛弄得这么别扭呢
相关文章推荐
- 百度web前端的一道笔试题(CarFactory)
- 百度前端笔试面试7个试题
- 百度一道笔试题解法探讨
- 今天学习时看到Intent的setResult方法,不太懂。于是百度了一下
- 百度web前端笔试题
- 百度前端笔试题目--css 实现一个带尖角的正方形
- 阿里_一道备受关注的前端开发笔试题
- 百度前端笔试题
- 百度的一道笔试题
- 百度的一道笔试题:N个从大到小排好序的整型队列,求top M元素
- 百度2013年校园招聘笔试题——WEB前端研发类
- CSS实现边框布局(百度前端笔试)
- 据说是一道百度的笔试题
- 百度web前端笔试--2015年
- 百度一道笔试题
- 网上看到的一个百度实习生笔试题
- 用javascript对象模拟LRUcache缓存池(百度2014校招前端笔试题)
- 百度2015校园招聘前端笔试题(西安站)
- 100盏灯经过一系列操作后最后还有多少盏灯亮着(百度的一道笔试题)
- 【笔试集锦】百度2018前端笔试笔试第一题