zoukankan      html  css  js  c++  java
  • js 下面代码输出什么?

    1.如果我们使用JavaScript的"关联数组",我们怎么计算"关联数组"的长度?

    var counterArray = {
        A : 3,
        B : 4
    };

    counterArray["C"] = 1;
    答案:
    Object.keys(counterArray).length

    2.什么是 instanceof 操作符?下面代码输出什么?

    function foo(){ 
      return foo; 
    }
    console.log(new foo() instanceof foo);
    答:
    instanceof操作符用来判断是否当前对象是特定类的对象。instanceof是检测对象的原型链是否指向构造函数的prototype对象的
    例如:
    function Animal(){    //或者不写return语句
        return this;
    }
    var dog = new Animal();

    dog instanceof Animal // 输出 : true
    但是,这里的foo定义为
    function foo(){ 
      return foo; 
    }
    所以 new foo() instanceof foo 返回 false

    3.下面代码输出什么?

    var salary = "1000$";
    (function () {    
    console.log("Original salary was " + salary);    
    var salary = "5000$";    
    console.log("My New Salary " + salary);

    })();

    答: Original salary was undefined
    My New Salary 5000$
    考察的是变量提升。等价于以下代码
        var salary = "1000$";
      (function () {     
        var salary ;     
        console.log("Original salary was " + salary);
          salary = "5000$";     
        console.log("My New Salary " + salary);
       })();
    4.两种函数声明有什么区别?
    var foo = function(){ 
        // code
    }; 

    function bar(){ 
        // code
    };
    这也是变量提升的问题,看下面的例子:
    console.log(foo);
    console.log(bar);
    var foo = function(){ 
        //  code
    }; 

    function bar(){ 
        //  code
    };
    输出:
    undefined
    function bar(){ 

        // code
    };
    为什么 foo 打印出来是 undefined,而 bar打印出来却是函数?JavaScript在执行时,会将变量提升。
    相当于下面的代码:
    // foo bar的定义位置被提升
    function bar(){ 
        // code
    }; 

    var foo;
    console.log(foo);
    console.log(bar);
    foo = function(){ 
        //  code
    };
    5.下面代码输出什么?
    var foo = function bar(){ 
      return 12; 
    };
    typeof bar();
    输出是抛出异常,bar is not defined。 这和作用域有关系。
    如果想让代码正常运行,需要这样修改代码:
    var bar = function(){ 
    return 12; 
    };
    typeof bar();
    或者
    function bar(){ 
    return 12; 
    };
    typeof bar();
    详细说明:
    var foo = function bar(){ 
        // foo is visible here 
        // bar is visible here
      console.log(typeof bar()); // Work here 
    };
    // foo is visible here
    // bar is undefined here
    6.下面代码输出什么?
    var z = 1,
    y = z = typeof y;
    console.log(y);
    输出 undefined
    js中赋值操作结合律是右至左的 ,即从最右边开始计算值赋值给左边的变量。
    上面的代码相当于:
    var z = 1;
    z = typeof y;
    var y = z;
    console.log(y);

    7.下面代码输出什么?
    var bar = true;console.log(bar + 0);   
    console.log(bar + "xyz");  
    console.log(bar + true);  
    console.log(bar + false);
    结果:
    1
    truexyz
    2
    1
    加法操作表:
    • Number + Number -> 加法

    • Boolean + Number -> 加法

    • Boolean + Boolean -> 加法

    • Number + String -> 连接

    • String + Boolean -> 连接

    • String + String -> 连接

    
    
    8.下面代码输出什么?
    var trees = ["xyz","xxxx","test","ryan","apple"];
    delete trees[3];  

    console.log(trees.length);
    结果: 5 因为delete操作符并不是影响数组的长度。

     9.怎么判断一个object是否是数组(array)?

    @1  使用 Object.prototype.toString 来判断是否是数组

    function isArray(obj){    
      return Object.prototype.toString.call( obj ) === '[object Array]';

    }

      这里使用call来使 toString 中 this 指向 obj。进而完成判断

    @2  使用 原型链 来完成判断

    function isArray(obj){   
     return obj.__proto__ === Array.prototype;

    }

      基本思想是利用 实例如果是某个构造函数构造出来的那么 它的 __proto__是指向构造函数的 prototype属性。

    @3  利用JQuery

    function isArray(obj){    
      return $.isArray(obj)

    }

     JQuery isArray 的实现其实就是@1

    10.JavaScript怎么清空数组?

    var arrayList = ['a','b','c','d','e','f'];

    @1

    arrayList = [];

    直接改变arrayList所指向的对象,原对象并不改变。

    @2

    arrayList.length = 0;

    这种方法通过设置length=0 使原数组清除元素。

    11.写一个mul函数,使用方法如下。

    console.log(mul(2)(3)(4)); // output : 24 
    console.log(mul(4)(3)(4)); // output : 48
    答:
    function mul (x) {    
      return function (y) { 

            return function (z) { 
                return x * y * z; 
            };
        };
    };
    说明: mul 返回一个匿名函数,运行这个匿名函数又返回一个匿名函数,最里面的匿名函数可以访问 x,y,z 进而算出乘积返回即可。

    对于JavaScript中的函数一般可以考察如下知识点:

    • 函数是一等公民

    • 函数可以有属性,并且能连接到它的构造方法

    • 函数可以像一个变量一样存在内存中

    • 函数可以当做参数传给其他函数

    • 函数可以返回其他函数

  • 相关阅读:
    Lua IDE工具-Intellij IDEA+lua插件配置教程(Chianr出品)
    XLua热更新用法全流程总结(所有容易出问题的点)
    Unity用GUI绘制Debug/print窗口/控制台-打包后测试
    Unity在UI界面上显示3D模型/物体,控制模型旋转
    Eclipse的Debug调试技巧
    IntelliJ Idea 常用快捷键列表
    设计模式之代理模式的静态代理和动态代理
    设计模式之单例模式
    linux下防火墙设置
    FastDFS简介和安装
  • 原文地址:https://www.cnblogs.com/jialuchun/p/6612765.html
Copyright © 2011-2022 走看看