面试摘要

101 阅读2分钟

一,闭包

1.1什么叫闭包

即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。 可以把闭包简单理解成“定义在一个函数内部的函数。

1.1.1案例

<script>
  function a1(){
      
          var n=123;
      
        function a2(){
          console.log(n); // 123
        }
      
      }
<script/>

  在代码中,函数a2就被包括在函数a1内部,这时a1内部的局部变量,对a2都是可见的。   但是a2内部的局部变量,对a1就是不可见的。这是JavaScript语言特有的“链式作用域”结构。   既然a2可以读取a1中的局部变量,那么只要把a2作为返回值,我们不就可以在a1外部读取它的内部变量了吗!

<script>
  function a1(){
      
          var n=123;
      
        function a2(){
          console.log(n); // 123
        }
        return a2;
      
     }
      
     var res=a1();
      
     res(); // 123
<script/>

a2就是一个简单的闭包

  <script>
     function a1(){
      
      var n=123;
  
    function a2(){
      console.log(n++);; // 123
    }
    return a2;
  
   }
  
   var res=a1();
      res();
      res();

   
  </script>

执行闭包后,闭包内部变量会存在,而闭包内部函数的内部变量不会存在。

二,

2.1 简述23.cookie , sessionStorage , localStorage的区别是什么

  1. 都可以用来存储数据
  2. ookie一条数据大小不能超过4KB ,最多不能存储超过20条,如果没有设置过期时间,那么在浏览器关闭后消失
  3. sessionStorage是会话存储,一条大小不能超过5M,数量没有限制,关掉页面数据消失
  4. localStorage本地存储,一条大小不超过5M,数量没有限制,除非主动删除,否则数据不会消失

三,

3.1ES6语法的新增特性有哪些

  1. let关键字,声明变量
  2. const关键字,声明常量
  3. 模板字符串
  4. 箭头函数
  5. 对象和数组解构
  6. 数据类型Symbol
  7. Set集合和Map集合
  8. Promise对象
  9. 引入class关键字
  10. Symbol 函数栈不能用 new 命令,因为 Symbol 是原始数据类型,不是对象。可以接受一个字符串作为参数,为新创建的 Symbol 提供描述,用来显示在控制台或者作为字符串的时候使用,便于区分。
    1. Es6当中,函数在谁的范围内调用,函数内部this指向指的就是谁,
    1. Es5当中,谁调用了函数,函数内部的this指向指的就是谁

四,

4.1 ==(宽松相等)和 ===(严格相等)有什么区别

  1. == 判断左右两边的值是否一致,但是只能判断值,不能判断类型,也就是说 2 ==‘2’是成立的 === 既判断值,也判断类型

5.1js的强制转换和隐式转换是怎样的

  1. parseInt,parseFloat,Number 这三种是强制转换
  2. -=、*=、/=、%= 是隐式转换