8 23知识总结

  1. var与let/const的区别

    1. let/const 声明的变量只在let/const 命令所在的代码块 {} 内有效,在 {} 之外不能访问。

    2. 使用 let/const关键字声明的全局作用域变量不属于 window 对象,所以不可以用window. 变量名的方式访问这些变量。

    3. Var会提升,let const不会

    4. Var可以重复声明,let const不可以

    5. Let声明的变量可以重复赋值,const不可以

    6. Let和var都用于声明变量,const用于声明常量

  2. 模板字符串

    1. 使用一对反引号包裹字符串,使用${}放置变量

    2. 优点:可以多行字符串换行书写,可以使用变量和表达式,不用用+拼接了

  3. 解构赋值简介

    1. 解构赋值:按照一定的模式,从数组 / 对象中提取值,并对变量进行赋值

    2. 数组解构按位置解构

    3. 对象解构按属性名解构

  4. js function和 箭头函数区别?

    1. 箭头函数不可以当做构造函数,也就是说,不可以使用 new 命令,否则会抛出错误。

    2. this、arguments、caller等对象在箭头函数体内都不存在。

    3. 箭头函数this指向上一层作用域,function的this指向调用它的对象

  5. 函数重载

    1.  函数名相同,函数的参数不同 (包括参数个数和参数类型),根据参数的不同去执行不同的操作。

  6. js 函数尾调用

    1. 在函数的最底部发起另一个函数的调用就是函数尾调用

    2. 目的时为了节约性能

    3. 一个函数返回的是另一个函数的调用结果,那么就被称为尾调用

  7. 链式调用

    1. 在构造函数中创建方法时,return this 返回当前调用方法的对象,可以实现链式调用方法

  1. 常见的浏览器内核有哪些 ?

    1. Trident 内核:IE, 360,搜狗浏览器 MaxThon、TT、The World,等。[又称 MSHTML]

    2. Gecko 内核:火狐,FF,MozillaSuite / SeaMonkey 等

    3. Presto 内核:Opera7 及以上。[Opera 内核原为:Presto,现为:Blink]

    4. Webkit 内核:Safari,Chrome 等。 [ Chrome 的:Blink(WebKit 的分支)]

  1. 解释清楚 null 和 undefined?

    1. null 用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。  null 表示"没有对象",即该处不应该有值。

    2. 当声明的变量还未被初始化时,变量的默认值为 undefined。 undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义。 

  2. 讲一下 prototype 是什么东西,原型链的理解,什么时候用 prototype ?

    1. prototype 是函数对象上面预设的对象属性。

  3. 函数里的 this 什么含义,什么情况下,怎么用 ?

    1. this 是 Javascript 语言的一个关键字。

    2. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。

    3. 随着函数使用场合的不同,this 的值会发生变化。

    4. 但是有一个总的原则,那就是 this 指的是,调用函数的那个对象。

  4. apply 和 call  什么含义,什么区别 ?什么时候用 ?

    1. call,apply 都属于 Function.prototype 的一个方法,它是 JavaScript 引擎内在实现的,因为属于 Function.prototype,所以每个 Function 对象实例(就是每个方法)都有 call,apply 属性。

    2. Call入参是序列,apply入参是数组,两个方法都会让函数立即执行

  5. 请描述一下 cookies,sessionStorage 和 localStorage 的区别?

    1. 共同点:都是保存在浏览器端,且同源的。

    2. 区别

      1. cookie 数据始终在同源的 http 请求中携带(即使不需要),即 cookie 在浏览器和服务器间来回传递。

      2. 而 sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存。

      3. cookie 数据还有路径(path)的概念,可以限制 cookie 只属于某个路径下。

      4. 存储大小限制也不同,cookie 数据不能超过 4k,同时因为每次 http 请求都会携带 cookie,所以 cookie 只适合保存很小的数据,如会话标识。

      5. sessionStorage 和 localStorage 虽然也有存储大小的限制,但比 cookie 大得多,可以达到 5M 或更大。

      6. 数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie 只在设置的 cookie 过期时间之前一直有效,即使窗口或浏览器关闭。

      7. 作用域不同,sessionStorage 在不同的浏览器窗口中不共享,即使是同一个页面;cookie 和 localStorage 在所有同源窗口中都是共享的。

  6. 从敲入 URL 到渲染完成的整个过程,包括 DOM 构建的过程?

    1. 用户输入 url 地址,浏览器根据域名寻找 IP 地址

    2. 浏览器向服务器发送 http 请求,如果服务器段返回以 301 之类的重定向,浏览器根据相应头中的 location 再次发送请求

    3. 服务器端接受请求,处理请求生成 html 代码,返回给浏览器,这时的 html 页面代码可能是经过压缩的

    4. 浏览器接收服务器响应结果,如果有压缩则首先进行解压处理,紧接着就是页面解析渲染

    5. 解析渲染该过程主要分为以下步骤:解析 HTML、构建 DOM 树、DOM 树与 CSS 样式进行附着构造呈现树

    6. 布局

    7. 绘制

  7. JavaScript工厂函数是什么?

    1. 工厂函数是用于创建对象的一个函数。这些内建函数都是类对象,调用时实际上是创建了一个类实例,也就是先利用类创建一个对象,然后返回这个对象,创建的函数都拥有相同的属性。

    2. 它是一个函数。

    3. 它用来创建对象。

    4. 它像工厂一样,“生产”出来的函数都是“标准件”(拥有同样的属性)

  8. 原型链--函数与对象的关系

    1. Function函数是所有函数的祖先函数

    2. 所有构造函数都有一个prototype属性,叫原型对象,也称为显式原型

    3. 所有原型对象都有一个constructor属性,指向被new的构造函数

    4. 被new出来的对象叫实例对象,它们都有一个__proto_对象,叫隐式原型,它指向构造函数的prototype对象

    5. 原型链就是当从对象上获取属性的时候,它的查找顺序先从对象自身找,如果没有就沿着__proto__一直找,这个寻找过程叫原型链

  9. Js 更改this指向的三种方法

    1. call 方法

      1. 语法:函数名.call(调用者, 参数1, …)

      2. 作用:函数被借用时,会立即执行,并且函数体内的this会指向借用者或调用者

    2. apply方法

      1. 语法:函数名.apply(调用者, [参数, …])

      2. 作用:函数被借用时,会立即执行,并且函数体内的this会指向借用者或调用者

    3. bind方法

      1. 语法:函数名.bind(调用者, 参数, …)

      2. 作用:函数被借用时,不会立即执行,而是返回一个新的函数。需要自己手动调用新的函数来改变this指向

    4. 总结:

      1. 相同点: 三者都可以把一个函数应用到其他对象身上,注意不是自身对象

      2. 不同点:

        1.  call,apply是直接执行函数调用。bind是绑定,执行需要再次调用。

        2. call,bind接收逗号分隔的无限个参数列表;apply接收数组作为参数。

  10. Es6的class类?

    1. Class类是使用函数的prototype对象封装的,可以实现封装,多态和继承。

    2. 类有constructor函数作为初始化类时调用的第一个构造函数

    3. 类使用extends实现类之间的继承

循环递归

深拷贝

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值