乐趣区

关于面试:Js面试题整理

src 和 href 的区别

  1. href 是指向网络资源所在位置,建设和以后元素(锚点)或以后文档(链接)之间的链接,用于超链接。
  2. src 是指向内部资源的地位,指向的内容将会嵌入到文档中以后标签所在位置。

    1. 在申请 src 资源时会将其指向的资源下载并利用到文档内,例如 js 脚本,img 图片和 frame 等元素。2. 当浏览器解析到该元素时,会暂停其余资源的下载和解决,直到将该资源加载、编译、执行结束,图片和框架等元素也如此,相似于将所指向资源嵌入以后标签内。这也是为什么将 js 脚本放在底部而不是头部。

观察者和订阅 - 公布的区别

  1. 观察者模式里,只有两个角色 —— 观察者 + 被观察者
  2. 而公布订阅模式里,却不仅仅只有发布者和订阅者两个角色,还有一个常常被咱们疏忽的 —— 经纪人 Broker

往更深层次讲:
观察者和被观察者,是松耦合的关系
发布者和订阅者,则齐全不存在耦合

从应用层面上讲:
观察者模式,多用于单个利用外部
公布订阅模式,则更多的是一种跨利用的模式(cross-application pattern),比方咱们罕用的消息中间件

delete 数组的 item,数组的 length 是否会 -1

只是被删除的元素变成了 undefined 其余的元素还是不变,也就是说数组长度没变

给出 [‘1’, ‘3’, ’10’].map(parseInt) 执行后果

parseInt(string, radix)

string:须要转化的字符,如果不是字符串会被转换,漠视空格符。
radix:数字 2 -36 之间的整型。默认应用 10,示意 10 进制。这个参数的意义是指把后面的字符看作多少进制的数字,所谓的基数。

如果 radix 在 2 -36 之外会返回 NaN。
在没有指定基数,或者基数为 0 的状况下,javascript 作如下解决:

  1. 如果字符串 string 以“0x”或者“0X”结尾,则基数是 16,16 进制;
  2. 如果字符串 string 以“0”结尾,基数是 8(8 进制)或者 10(10 进制), 依据实现环境决定。
  3. 如果字符串 string 以其余任何值结尾,则基数是 10,10 进制。

Proxy 相比于 defineProperty 的劣势

Async/Await 如何通过同步的形式实现异步

https://es6.ruanyifeng.com/#docs/generator-async

箭头函数能够 new 吗?为什么?

箭头函数、没有 prototype、没有本人的 this 指向、不能够应用 arguments、天然不能够 new。
如果 new 的时候会报错 function is not a constructor

异步队列

https://github.com/Advanced-F…

一个 iframe,内嵌了一个 A 页面,iframe 的宽高不停变动,如何让 A 页面的宽高实时自适应这个 iframe 的宽高大小。请说出至多 3 种办法,越难越好

解释一下在 js 里,0.1 0.2 为什么等于 0.30000000000000004,如何通过代码解决这个问题?

如何防止重绘或者重排?

  1. 当 DOM 元素的属性发生变化 (如 color) 时, 浏览器会告诉 render 从新描述相应的元素, 此过程称为 repaint。
  2. 如果该次变动波及元素布局 (如 width), 浏览器则摈弃原有属性, 从新计算并把后果传递给 render 以从新描述页面元素, 此过程称为 reflow。
  3. 回流必定会产生重绘,重绘不肯定会引发回流。

typeof 和 instanceof 区别

instanceof 运算符用来检测 constructor.prototype 是否存在于参数的原型链上
typeof 操作符返回一个字符串, 批示未经计算的操作数的类型。

谈谈变量晋升?

1. 只有申明自身会被晋升,而赋值或其余运行逻辑会留在原地。2. 每个作用域都会进行晋升操作。3. 函数申明会被晋升,然而函数表达式却不会被晋升。4. 函数申明和变量申明都会被晋升,是函数会首先被晋升,而后才是变量。5. let 和 const 进行的申明不会在块作用域中进行晋升。

defer 和 async 区别

defer

  1. 浏览器开始解析 HTML 网页。
  2. 解析过程中,发现带有 defer 属性的 <script> 元素。
  3. 浏览器持续往下解析 HTML 网页,同时并行下载 <script> 元素加载的内部脚本。
  4. 浏览器实现解析 HTML 网页,此时再回过头执行曾经下载实现的脚本。

async

  1. 浏览器开始解析 HTML 网页。
  2. 解析过程中,发现带有 async 属性的 script 标签。
  3. 浏览器持续往下解析 HTML 网页,同时并行下载 <script> 标签中的内部脚本。
  4. 脚本下载实现,浏览器暂停解析 HTML 网页,开始执行下载的脚本。
  5. 脚本执行结束,浏览器复原解析 HTML 网页。

requestAnimationFrame

它仅仅绘制用户可见的动画。这意味着没把 CPU 或电池寿命节约在绘制处于背景标签,最小化窗口,或者页面暗藏区域的动画上
浏览器能够把同一页面的多处动画,放弃在繁多的回流和重绘周期里

退出移动版