一、Var与let的区别是什么
1.1Let:
用于声明变量
声明的变量不能重复声明
声明的变量不能提升变量
块状作用域
使用let声明的变量不属于顶层对象
1.2var:
用于声明变量
声明的变量能重复声明
声明的变量能提升变量
函数作用域
二、Promise的三个状态是什么
pendding(执行中)
fulfilled(完成,执行了resolve())
rejected(失败,reject()执行)
三、class继承的关键词是什么?构造函数的关键词是什么?
Class:extends
构造函数:constructor
四、使用set实现数组去重
第一种
var numArr=[34,25,45,67,34,5,85,34,46,96]
//ES6方法 会得到单一结构的数据
var arr=new Set(numArr)
console.log(arr)
第二种
Array.prototype.singleArr = function() {
return[... new Set(this)];
}
let arr = [1,1,2,3].singleArr();
五、数组方法map的工作原理
将计算后的结果放入新数组
六、数组方法filter的工作原理
如果返回值为真,将元素加入新数组
七、React中ref的作用是什么
如果标记在标签上就获取标签,如果标记在属性上就获取属性
(ref是React提供的用来操纵React组件实例或者DOM元素的接口。)
八、请描述React的事件原理
通过代理实现事件处理
九、简述React的父子组件通信
父传子:属性值
子传父:回调函数
十、请写出React组件运行中的5个钩子函数并解释其含义
初始化阶段:
conmponentWillMount:组件即将挂载
render:渲染
componentDidMount:成功执行完毕render并完成dom节点的渲染,可以对dom修改
运行中阶段:
componentWillReceiveProps(nextProps):父组件修改属性触发
ShouldComponentUpdate(nextProps , nextState):返回false,会阻止render的调用
componentWillUpdate:组件将要更新,不能修改属性及状态
componentDidUpdate(preProps ,preState):可以修改dom参数是被修改之后的属性及状态
销毁阶段:
componentWillUnmount:在删除组件前进行清理工作