1、函数防抖与节流
--函数防抖(debounce):触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间
函数节流(throttle):高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率
使用场景,比如无限加载的时候,
防抖输入搜索:我连续输入100个字母,在输入最后一个字母后,再等200毫秒,执行请求接口。
2、闭包
--它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除。
优点:
(1)变量长期驻扎在内存中;
(2)避免全局变量的污染;
(3)私有成员的存在 ;
3、箭头函数和普通js,this指向问题
4、bfc原理和定义
5、es6新增语法
6、webpack 打包 配置选项
7、import 和 require 的区别
8、对象的继承
9、操作对象的几种方法
10、jq组件化
11、数组去重
--【12种去重方法https://segmentfault.com/a/1190000016418021】
12、回调函数
13、css盒模型
--分两种盒模型:IE盒模型和W3C盒模型,两种盒模型都包括content、padding、border、margin(从里到外)
14、高阶函数
15、Pomise.all
16、es6新增语法
let、const、箭头函数
17、块级作用域
--JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。es6新增了。
块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。
18、宏任务和微任务
宏任务(macrotask) | 微任务(microtask) | |
---|---|---|
谁发起的 | 宿主(Node、浏览器) | JS引擎 |
具体事件 | 1. script (可以理解为外层同步代码) 2. setTimeout/setInterval 3. UI rendering/UI事件 4. postMessage,MessageChannel 5. setImmediate,I/O(Node.js) |
1. Promise 2. MutaionObserver 3. Object.observe(已废弃;Proxy 对象替代) 4. process.nextTick(Node.js) |
谁先运行 | 后运行 | 先运行 |
会触发新一轮Tick吗 | 会 | 不会 |
19、vuex存储在哪里,vuex存的数据页面刷新之后,存的值还还在吗?
--vuex存储在内存,用于组件中传值,当刷新页面,存储的值丢失
当两个组件共用一个数组时,其中一个变化了希望另一个组件也变化,localstorage做不到。
20、小程序的分包怎么做?
--开发者通过在 app.json subpackages字段声明项目分包结构;
分包别名、独立分包(independent)、分包预加载(preloadRule)
https://www.jianshu.com/p/1d754a618084
21、赋值与解构
--解构赋值语法是一个 Javascript 表达式,这使得可以将值从数组或属性从对象提取到不同的变量中
https://segmentfault.com/a/1190000016182444
22、跨域问题如何解决
23、vue源码解析
https://www.jianshu.com/p/c914ccd498e7
24、css变量
通常的最佳实践是定义在根伪类 :root
:root {
--main-bg-color: brown;
}
element {
background-color: var(--main-bg-color);
}
网友评论