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
     
  • 相关阅读:
    ES6 新属性 Symbol
    box-shadow 属性详解
    在vue 中 使用 tinymce编辑器
    var let const 结合作用域 的探讨
    防抖和节流在vue中的应用
    分享几个按钮样式
    队列学习
    栈的学习
    Object—常用的遍历
    从零认识Java Package
  • 原文地址:https://www.cnblogs.com/longze/p/3665922.html
Copyright © 2011-2022 走看看