一份react-native面试题
声明:题目是群里面看到的,并不完全。答案自己手撸
1、下面打印出b的值是?if(true){let b = 2} alert(b).
let不存在变量提升,且作用域只在代码块,输出undefined
2、const name = 'jack'; const age = 20; const person = {[name] : true, [age] : true}. person对象的两个key分别是什么
对象的key只能是字符串,'jack'和'20'
3、使用数组的reduce方法求和。

reduce函数对数组中的每一个值都会执行一次,接收四个参数,第一个是初始值,第二个遍历当前的值,第三个是当前值的索引,第四个是遍历的数组
4、reactJS中和子组件如何通信
一般是控制子组件的显示状态,可以用改变props,或者调用子组件的方法进行。子组件事件传递给父组件回调就好
5、reactJS兄弟组件之间如何通信
事件用DeviceEventEmitter、数据传递刷新等用Redux、数据库
6、传入setState函数的第二个参数作用是什么
set方法调用刷新完毕后回调
7、reactJS中如何去写组件
class Person extends Componment{}. ...static propTypes ..... static defaultProps
8.下面的输出结果是?

箭头函数初始化时就绑定了作用域,为foo函数的代码块,所以输出为foo
9、使用es6的class封装一个Car对象,有name和color两个属性,以及一个print方法,实现以下结果:
let myCar = new Car('奇瑞','红色');
myCar.print(); // 打印出汽车名称:奇瑞 颜色:红色

10、略
11、完成isNumber函数,返回Promise对象给调用者。isNumber(num){coding....}

12、使用async、await以及Promise实现调用asyncPrint函数后可以指定多少毫秒后打印出传入的值,比如asyncPrint('hello',500),实现500ms后输出hello

13、reactJS在生命周期中哪一部调用AJAX请求?
ComponentDidMount
14、reactJS的props.children.map函数来遍历会收到异常提示,为什么?应该如何遍历?
this.props.children的值有三种可能:如果当前组件没有子节点,它就是undefined;如果有一个子节点,数据类型是object;如果有多个子节点,数据类型就是array。系统提供React.Children.map()方法安全的遍历子节点对象
15、字符串var str = 'abc345efgabcab2f',用实现如下人功能
15.1、去掉字符串中的a、b、c字符

15.2、将字符串中的数字用中括号扩起来,结果是'abc[345]efgabcab[2]f''

15.3、将字符串中的每个数字分别乘以2,得到'abc6810efgabcab4f'

16、请以优雅的方式将[1,2,[3,[4,[5]],6],7,8]转换为[1,2,3,4,5,6,7,8]

17、计算1-10000中出现的0 的次数

这里要注意的是reduce函数必需设置初始值0,而不能忽略。若忽略该参数,则默认sum的初始值为首次循环的那个item,即数组的第一个元素,导致结果出错。