JavaScript的核心,闭包与作用域

原贴地址:http://bbs.csdn.net/topics/390300541


一、

if (!("a" in window)) {
    var a = 1;
}
alert (a);

二、

var a = 1,
    b = function a (x) {
        x && a (--x);
    };
alert (a);

三、

function a (x) {
    return x * 2;
}
var a;
alert (a);

四、
function b (x, y, a) {
    arguments[2] = 10;
    alert (a);
}
b(1, 2, 3);

五、

function a () {
    alert (this);
}
a.call (null);



解答:

一、undefined

理由:JS的作用域是以函数来划分的,而不是以块来划分。大括号({})不属于作用域。在执行JS的时候,会先预编译一下要执行的JS代码。在编译的过程中,a被定义,所以"a" in window为true,if判断为false,赋值语句未执行,结果为undefined。 

二、1

理由:function a为局部变量,a的值仍为1。

三、

function a(x) {  

return x * 2;

}

理由:var a只是申明,并未赋值。a仍指向原来的值,即function a。

四、10

理由:arguments代表了函数实际接收参数的集合,可以通过下标对相应参数进行访问。如果修改此对象,则相应变量的值也会被修改。

五、[Object Window]

理由:call方法的作用是以对象B代替对象A来调用对象A的方法,使方法中的this指向对象B。call方法有多个参数,第一个参数为用来代替对象的对象,也就是对象B。其他参数用来传递给方法。当第一个参数为空时,将会使用全局window对象。即函数中的this指向window。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值