深入理解 javascript

// b = function a(){ code } 是函数字面量形式,不是函数声明,它等价于 b = function(){ code },
    // a并没有被重定义为一个函数所以结果为 undefined
    var a,
        b = function a(x) {
        x && a(--x);
    };
    alert(a); //undefined
//javascript在执行之前会准备代码的运行环境,此时所有使用var声明的全局变量都会被添加的执行环境中,
// 但是这些变量是否就能真正成为全 局变量, 还要决定于javascript的执行情况,下面的这一段代码就说
// 明:在准备代码的执行环境时a被添加到了window中,但是没有被初始化; 由于运行中if中的条件为false,
// 所以a不会被初始化。所以结果是undefined。如果不使用 var 声明变量,则变量不会立刻添加到全局环境中,当代码执行到该处时才会成为全局变量
    alert("a" in window);//true
    if (!("a" in window)) {
        var a = 1;
    }
    alert(a); //undefined

//函数和变量名称相同,如果变量已经被初始化,则不能相互覆盖;如果变量未初始化,函数会覆盖变量。
    // 即变量的声明可以被覆盖,但是赋值不能被覆盖;
    function a(x) {
        return x * 2;
    }
    var a;
    alert(a); //function

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

function a() {
        alert(this);
    }
    a.call(null); //window 当被传入的参数为null或undefined是默认指向window
http://www.cnblogs.com/TomXu/archive/2012/02/10/2342098.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值