zoukankan      html  css  js  c++  java
  • 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
     
  • 相关阅读:
    css 字体相关属性的设置
    flex 三列布局
    python shelve模块
    python collections模块
    Python shutil模块,高级文件管理
    python中os模块的常用
    python中hashlib加密模块和sys系统模块
    logging日志模块
    random模块常用方法
    序列化json和pickle模块
  • 原文地址:https://www.cnblogs.com/longze/p/3665922.html
Copyright © 2011-2022 走看看