最近的也在找工作,就整理了一些面试题
1. 怎样打断forEach循环
let arr = [1, 2, 3]
try {
arr.forEach(item => {
if (item === 2) {
throw('循环终止')
}
console.log(item)
})
} catch(e) {
console.log('e: ', e)
}
2. vue模板为什么只有一个根节点
- 从数据结构来看,new Vue({el:根节点}) 要求只能有一个根节点;
- 从diff算法来看,diff算法本就是利用“树”状数据结构来进行虚拟dom更新,所以,vue只有一个根元素,其实也是diff算法所要求的。
3. vue双向绑定的实现原理
核心是 ==Object.defineProperty()==方法
数据属性
- .configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性,默认值为true。
- .enumerable:表示能否通过for in循环访问属性,默认值为true
- writable:表示能否修改属性的值。默认值为true。
- value:包含这个属性的数据值。默认值为undefined。
访问器属性
- get:读取属性的值的函数。
- .set:设置属性的值时的函数