• So, you think you know JavaScript?


    Baranovskiy
     
    题目一:
     
    if (!("a" in window)) {
        var a = 1;
    }
    alert(a);
    答案:undefined
    关键点:js的所有变量自动提前声明
               全局变量挂载在window下
     
     
    题目二:
     
    var a = 1,
        b = function a(x) {
            return x && (x + a(--x));
        };
    alert(a);
    答案:1
    关键点:函数声明与函数表达式的区别;
               函数声明会覆盖变量声明但不会覆盖变量赋值;
               声明的函数名与函数表达式的别名优先放在函数的作用域中;
    其他:执行b(2)得到3
    延伸:
    var a = 1;
    function a(x) { return x && (x + a(--x)); };
              a依然是1,a(2)会报错“TypeError: number is not a function
              补充:解析时先提前声明后赋值,函数声明覆盖变量声明
              再延生:
    var a;
    function a(x) { return x && (x + a(--x)); };
             执行a(2)得到3,a++得到NaN,
             将var a;移到最后依然得到同样的结果。          
     
    题目三:
    function a() {
        alert(this);
    }
    a.call(null);a.call({});
             答案:[object Window]、[object Object]
             关键点:call的this指定功用
                        null将被无视,同样的还有undefined
     
  • 相关阅读:
    c#多线程控制
    SQL解析XML文件
    c#时间差高精度检查
    SQL Server数据库级别触发器
    c#做对比软件
    项目管理开源软件
    信息量、信息熵、交叉熵、相对熵
    GAN评价指标之mode score
    Fréchet Inception Distance(FID)
    图片的多样性之模式崩溃
  • 原文地址:https://www.cnblogs.com/longze/p/3665922.html
Copyright © 2020-2023  润新知