• js-面试题


    1. 数组属性

    2. 数组常用方法

    3. String 对象方法

    4. 数组去重

    5. 创建对象的方式

    6. 字面量的方式

    7. js继承

    8. 数组最常用遍历方法

    9. js执行机制

      1. JavaScript是一门单线程语言。

        js是单线程,那就是在执行代码的时候是从上往下执行的

        Event Loop(事件循环)是JavaScript的执行机制。

    10. 定时器的运用

    11. var a = 1000; setInterval(function() { console.log(a);//输出的a a+=1000; }, a)

      1. 如何使定时器的时间间隔增加
      2. 定时器是window方法,它的this指向window,所有输出的a是window的a,a也会不断累加,但是时间间隔a是定时器函数的a,恒定不变
      3. var a=1000; function fn() { var time=setInterval(function() { a += 1000; console.log(a); // fn(); clearInterval(time) fn() // 为什么一开始a不会变化,因为作用域不同 // 为什么定时器的a会变化,因为fn重新调用了,但此时的a与fn处于同一作用域 }, a) } fn()
    12. js创建对象的方式

      1. Object构造函数创建
      2. 使用对象字面量表示法 var Person = {};``//相当于var Person = new Object();其实1和2是一种
      3. 使用工厂模式创建对象
      4. 使用构造函数创建对象
      5. 原型创建对象模式
      6. 组合使用构造函数模式和原型模式
    13. js继承的方式

      1. 原型链继承
      2. 借用构造函数继承
      3. 组合继承(组合原型链继承和借用构造函数继承)(常用)
      4. 原型式继承
      5. 寄生式继承
      6. 寄生组合式继承(常用)
    14. 递归的运用

    15. 如何理解闭包

      1. 我在问这个问题的时候,我其实并不想听到对方说

        闭包就是能够访问到其他函数作用域

        闭包就是能够将变量保存在内存当中

        之类这样的话的。

        因为别人从网上硬记下来也能这么说,而且这些也都只是闭包的现象。我更希望对方能跟从JS的执行开始讲、一个函数执行前后的内存回收过程,再阐述闭包形成的原因,这样又会导致什么问题,应该怎么解决。最后再讲有什么用途,或者说自己曾经有什么需求需要闭包来实现。

        1. 闭包就是能够读取其他函数内部变量的函数
        2. 闭包的优点:闭包可以读取函数内部的变量,可以让变量的值始终保持在内存中。
        3. 闭包的缺点:

        面试答题:

        1. 什么是闭包

          1. 函数和函数内部能访问到的变量(也叫环境)的总和,就是一个闭包。
        2. 闭包的特点

          1. 声明在一个函数中的函数,函数嵌套函数,叫做闭包函数
          2. 函数内部可以引用外部的参数和变量
          3. 参数和变量不会被垃圾回收机制回收
        3. 闭包的用途

          1. 主要是为了设计私有的变量和方法,可以避免全局变量的污染,方便调用上下文的局部变量 加强封装性
          2. 主要可以访问其他函数内部变量
          3. 保护变量不被内存回收机制回收
        4. 闭包的缺点

          1. 增大内存的使用量,常驻内存,,使用不当会造成内存泄漏
        5. 曾经的需求

          1. 如果你调用一个对象里的函数,并且函数里再返回一个函数,返回值有this,此时this就指向了window,可以利用闭包特性,因为父级函数的this指向该对象,在父级函数里定义一个that=this,this就会指向该对象而不会指向window了,也可以使用箭头函数解决
          2. 创建自定义函数的时候,基本都要有传参,传参和返回的函数就构成了闭包 (取值和排序)
        6. 解决闭包造成的内存泄露

          1. 在退出函数之前,将不使用的局部变量全部删除。可以使变量赋值为null;

          2. 这段代码会导致内存泄露
               window.onload = function(){
                   var el = document.getElementById("id");
                   el.onclick = function(){
                       alert(el.id);
                   }
               }
               解决方法为
               window.onload = function(){
                   var el = document.getElementById("id");
                   var id = el.id;                                      //解除循环引用
                   el.onclick = function(){
                       alert(id); 
                   }
                   el = null;                                          // 将闭包引用的外部函数中活动对象清除
               }
               
            
          3. 避免变量的循环赋值和引用

    16. 如何理解变量的作用域

      1. 变量在函数外定义,即为全局变量,全局变量就是在页面内都可以调用的变量,全局变量有 全局作用域: 网页中所有脚本和函数均可使用
      2. 变量在函数内声明,只能在函数内部访问,变量为局部作用域,
    17. 简述同步和异步的区别

      1. 所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。

        https://blog.csdn.net/qq_22855325/article/details/72958345

        同步的概念应该是来自于OS中关于同步的概念:不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式).同步强调的是顺序性.谁先谁后.异步则不存在这种顺序性.

        同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。

        异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。

    18. 写一个函数,清除字符串前后的空格(兼容所有浏览器)

      1. function trim(str) {
        if (str && typeof str === "string") {
        return str.replace(/(^s)|(s)$/g,""); //去除前后空白符
        }
        }
    19. 箭头函数 this指向

    20. 如何判读当前使用的浏览器

    21. 避免按钮多次点击请求ajax

    22. 原型及原型链

    23. 添加,移除,移动,复制,创建,查找节点

    24. 线程和进程的区别

    25. 获取浏览器url中查询字符串的参数

    26. js字符串函数

    27. 如何确定一个变量时不是字符串类型

    28. 比较typeof和instanceof

    29. 判断一个字符串中出现最多的字符,并统计出现的次数

    30. documentload和documentready区别

    31. js中typeof放回的数据类型

    32. 事件绑定和普通事件区别

    33. js中的this

    34. 如何给ajax请求的数据绑定事件

    35. documentload和documentready区别

    36. 列举三种强制类型转换和两种隐式转换

    37. jQuery中$.bind(),$.on(),$.live()的异同点

      1. bind方法要在,js动态插入标签之后,才可使用,要是在之前写入的话,不可生效。
        而on方法,无论前后皆可使用,因为他把事件写在了父及上,利用冒泡,实现事件委托
    38. jQuery中callback的作用

      1. jquery中callback是当某一个事件方法完成后在回调时候来执行其他的操作
    39. jQuery将变量对象转化成json字符串的方法

    40. 创建dom的几种方式 优劣点

  • 相关阅读:
    开发错误记录2 .MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
    开发错误记录1:解决:Only the original thread that created a view hierarchy can touch its views.
    第二篇 Python初识别及变量名定义规范
    第三篇 Python执行方式和变量初始
    第一篇 Python安装与环境变量的配置
    1. Linux系统常用操作
    Python的内存管理、命名规则、3个特性讲解
    操作系统及Python解释器工作原理讲解
    计算机基础小白篇
    Oracle SQL性能优化
  • 原文地址:https://www.cnblogs.com/ycyc123/p/14823919.html
Copyright © 2020-2023  润新知