zoukankan      html  css  js  c++  java
  • js面试笔试题

    1. Js的Typeof返回类型有那些?

      string;undefined;number; function;object;boolean;symbol(ES6)

    2. null和undefined的区别?

      null是Js的关键字,表示空值。可作为object的一个特殊值,如果object值为null,表示该对象不是一个有效对象。

      undefined不是Js的关键字,是一个全局变量,是Global的一个属性。

    • 类型不一样;typeof(null) == "object",typeOf(undefined) == "undefined"
    • 转化为值时不一样:undefined为NaN ,null为0, 即Number(null)==0,Number(undefined) == NaN

      相同点:

      都是原始类型的值,保存在栈中变量本地

    3. 闭包的特性,闭包解决了什么问题?

      闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

      特性

        1、函数嵌套函数。
        2、函数内部可以引用外部的参数和变量。
        3、参数和变量不会被垃圾回收机制回收。

      用途

        1、闭包可以读取函数内部变量    

        2、将函数内部变量的值始终保存在内存中

      优势

         1、保护函数内的变量安全。

         2、在内存中维持一个变量。

         3、通过保护变量的安全实现JS私有属性和私有方法(不能被外部访问)。

         4、避免全局变量的污染。

    4. 数组方法pop() push() unshift() shift()

    push()尾部添加 pop()尾部删除
    unshift()头部添加 shift()头部删除 

    5. ”==”和“===”的不同

    答案:前者会自动转换类型,再判断是否相等
    后者不会自动类型转换,直接去比较

    6. 说说对 prototype和 __proto __ 的理解

    prototype是函数才有的属性,prototype本身也是个函数对象;__proto __是所有对象都有的属性,__proto __指向构造它的对象的对象的prototype。

    7. 使用构造函数实现一个类Foo,需要有属性 count, 方法bar(), 并且写出创建该类对象的方法
    function Foo(){
      this.count = 0;
    }
    
    Foo.prototype.bar = function(){
    }
    
    var foo = new Foo();
    foo.bar();
    8. 说说ES6为什么要引入let关键字
    因为要解决var声明对象产生的问题。var是函数级作用域,而let是块作用域。var存在变量提升,即变量可以在声明之前使用,值为undefined,而let声明的变量如果在声明之前使用会抛出一个错误。另外let不允许重复声明变量。ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在 ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了。

     

     

  • 相关阅读:
    如何进行Django单元测试
    django使用celery实现异步操作
    django 多并发,多线程。
    cookies设置时间
    Mysql实现企业级日志管理、备份与恢复
    Redis与Memcached的区别
    cookie 和session 的区别详解
    python内存泄露查找
    浙大月赛ZOJ Monthly, August 2014
    Vector
  • 原文地址:https://www.cnblogs.com/wrbxdj/p/10078848.html
Copyright © 2011-2022 走看看