前端面试之Js基础
Posted seven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试之Js基础相关的知识,希望对你有一定的参考价值。
src和href的区别
- href是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置。
1. 在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。 2. 当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。
观察者和订阅-发布的区别
- 观察者模式里,只有两个角色 —— 观察者 + 被观察者
- 而发布订阅模式里,却不仅仅只有发布者和订阅者两个角色,还有一个经常被我们忽略的 —— 经纪人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作如下处理:
- 如果字符串string以 “0x” 或者 “0X” 开头,则基数是16,16进制;
- 如果字符串string以 “0” 开头,基数是8(8进制)或者10(10进制),根据实现环境决定。
- 如果字符串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,如何通过代码解决这个问题?
如何避免重绘或者重排?
- 当 DOM 元素的属性发生变化 (如 color) 时, 浏览器会通知 render 重新描绘相应的元素, 此过程称为 repaint。
- 如果该次变化涉及元素布局 (如 width), 浏览器则抛弃原有属性, 重新计算并把结果传递给 render 以重新描绘页面元素, 此过程称为 reflow。
- 回流必定会发生重绘,重绘不一定会引发回流。
typeof和instanceof 区别
instanceof 运算符用来检测 constructor.prototype 是否存在于参数的原型链上
typeof操作符返回一个字符串,指示未经计算的操作数的类型。
谈谈变量提升?
1. 只有声明本身会被提升,而赋值或其他运行逻辑会留在原地。
2. 每个作用域都会进行提升操作。
3. 函数声明会被提升,但是函数表达式却不会被提升。
4. 函数声明和变量声明都会被提升,是函数会首先被提升,然后才是变量。
5. let和const进行的声明不会在块作用域中进行提升。
defer和async区别
defer
- 浏览器开始解析 html 网页。
- 解析过程中,发现带有defer属性的<script>元素。
- 浏览器继续往下解析 HTML 网页,同时并行下载<script>元素加载的外部脚本。
- 浏览器完成解析 HTML 网页,此时再回过头执行已经下载完成的脚本。
async
- 浏览器开始解析 HTML 网页。
- 解析过程中,发现带有async属性的script标签。
- 浏览器继续往下解析 HTML 网页,同时并行下载<script>标签中的外部脚本。
- 脚本下载完成,浏览器暂停解析 HTML 网页,开始执行下载的脚本。
- 脚本执行完毕,浏览器恢复解析 HTML 网页。
requestAnimationFrame
它仅仅绘制用户可见的动画。这意味着没把 CPU 或电池寿命浪费在绘制处于背景标签,最小化窗口,或者页面隐藏区域的动画上
浏览器可以把同一页面的多处动画,保持在单一的回流和重绘周期里
以上是关于前端面试之Js基础的主要内容,如果未能解决你的问题,请参考以下文章