useState执行原理:提升state到外部作用域,在函数外层定义state
let _state=[],index = 0 function useState(initialState){ let curIndex = index _state[curIndex] = _state[curIndex]===undefined?initialState:_state[curIndex] const setState = ((newState)=>{ if(Object.is(newState,_state[curIndex]){ return } _state[curIndex] = newState React.render(<App />,rootElement) index=0 } index+=1 return [_state[curIndex],setState] }
['1','2','3','10','10'].map(parseInt)的返回值 --------->[1,NaN,NaN,3,4]
首先:
如果想让 parseInt(string, radix)
返回 NaN,有两种情况:
-
第一个参数不能转换成数字。
-
第二个参数不在 2 到 36 之间。
parseInt(item,index):parseInt接受两个参数,第二个参数不传或传0默认显示为将item转为10进制数,['1','2','3','10','10'].map()相当于把1,2,3,10,10这些元素作为item传递给parseInt,再把对应的下标0,1,2,3,4作为parseInt的第二个参数index,而parseInt第二个参数表示基数,即把item转为index进制数,所以['1','2','3','10','10'].map(parseInt)的返回值应该为[1,NaN,NaN,3,4],因为1的下标对于0,默认转为10进制为1,2的下标对于为1,基数为2-32,所以返回NaN,3的下标对于2,而2进制中只有0和1,所以返回NaN,10的下标对于的是3,3进制转换10后为3^1*1+3^0*0=3……诸如此类转换。
什么时候不建议使用箭头函数?
1.需要用到this指向,arguments,prototype的时候。
2.需要作为构造函数来使用时。
虚拟Dom的优缺点:
优点:
1.保证性能下限
2.无需直接操作dom
缺点:
dom初始渲染时,由于多了一层虚拟dom对比,会比innerHTML的插入慢。
请求头header里面都包含哪些属性?
- Accept
- Accept-Encoding
- Accept-Language
- Connection:keep-alive
- Cookie
- Host
- Referer
- Sec-Fetch-Dest
- Sec-Fetch-Mode
- Sec-Fetch-Site
- User-Agent
- Content-Type
- :method
- :path
请求响应code状态码:
200:请求成功
204:请求成功了但是服务器没有返回数据
301:请求的资源已被永久的移动到新的url
400:客户端请求的语法错误,服务器无法理解。
401:用户的身份认证
403:服务器拒绝执行客户端的请求
404:地址错误
500:服务器内部错误,无法完成请求
501:服务器不支持请求的功能