你真的会用javascript?
偶然在csdn看到几个js的小题,考察的都是很基础的知识,拿来分享一下
1.
1 2 3 4 |
if (!("a" in window)) { var a = 1; } alert(a); |
开始,我以为是1,后来试了下,结果是undefined,仔细看看,也对:js在执行是,会首先提取所有var的新变量,让后给其赋值undefined,并将其加入到当前的执行环境总,比如这里,程序还没执行,实际就有了window.a=undefined,所以“(“a” in window)==true”
2.
1 2 3 4 5 |
var a = 1; var b = function a(x) { return x*x; }; alert(a); |
一直以为这种写法会报错,汗颜的是,前段时间去某家公司面试,还碰上了类似的题目,回来也没写写试试。
实际试了下,这里的alert仍然是1,这种写法,a只在function a的内部是function,但是如果在a内部调用a(x),会递归
3.
1 2 3 4 5 |
function a(x) { return x * 2; } var a; alert(a); |
呵呵,有了第一个题,这个就比较简单了,function
4.
1 2 3 4 5 |
function b(x, y, a) { arguments[2] = 10; alert(a); } b(1, 2, 3); |
这个也简单,arguments[2]就是a的替身,a会被修改为10
5.
1 2 3 4 |
function a() { alert(this); } a.call(null); |
这里考察的是call的使用,正常call的参数是什么,里面的this就是什么(我也是这么理解的),但是关于call还有一条说明:如果call的参数是null或者undefined,里面的this仍然是当前执行环境,即window