js-面试题

数组属性


数组常用方法


数组去重


String 对象方法


创建对象的方式

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

js执行机制


数组最常用遍历方法


js继承的方式

原型链继承
借用构造函数继承
组合继承(组合原型链继承和借用构造函数继承)(常用)
原型式继承
寄生式继承
寄生组合式继承(常用)

闭包

什么是闭包

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

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

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

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

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

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

这段代码会导致内存泄露
   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;                                          // 将闭包引用的外部函数中活动对象清除
   }
   
避免变量的循环赋值和引用

递归


变量的作用域

变量在函数外定义,即为全局变量,全局变量就是在页面内都可以调用的变量,全局变量有 全局作用域: 网页中所有脚本和函数均可使用
变量在函数内声明,只能在函数内部访问,变量为局部作用域,

简述同步和异步的区别

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

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

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

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

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

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

function trim(str) {
    if (str && typeof str === "string") {
        return str.replace(/(^\s)|(\s)$/g,""); //去除前后空白符
    }
}

this指向


避免按钮多次点击请求ajax


原型及原型链


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


线程和进程的区别


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


js字符串函数


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


比较typeof和instanceof


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


documentload和documentready区别


js中typeof放回的数据类型


事件绑定和普通事件区别


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


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


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


jQuery中callback的作用


jQuery将变量对象转化成json字符串的方法


创建dom的几种方式 优劣点


Base64


事件冒泡-事件捕获-事件委托


posted @ 2021-12-26 11:09  有风吹过的地方丨  阅读(13)  评论(0编辑  收藏  举报