笔试题
function fun(n,0){
console.log(o)
return{
fun:function(m){
return fun(m,n)
}
}
}
var c = fun(0)
c.fun(2)
c.fun(3)
答案:undefined,0,1,1
2.React的UseEffect Hook可以看作哪几个生命周期的组合? componentWillUnmount,componentDidUpdate,componentDidMount
3.下列代码的输出是什么?
function sayHi (){
console.log(name)
console.log(age)
var name = "showmebug"
let age = 3
答案:undefined 和 ReferenceError
答案解析:
在函数中,我们首先使用var关键字声明了name变量。 这意味着变量在创建阶段会被提升(JavaScript会在创建变量创建阶段为其分配内存空间),默认值为undefined,直到我们实际执行到使用该变量的行。 我们还没有为name变量赋值,所以它仍然保持undefined的值。
使用let关键字(和const)声明的变量也会存在变量提升,但与var不同,初始化没有被提升。 在我们声明(初始化)它们之前,它们是不可访问的。 这被称为“暂时死区”。 当我们在声明变量之前尝试访问变量时,JavaScript会抛出一个ReferenceError。
4.在js中,有哪些对象在做boolen判断的时候,会被隐式转换为false? undefined,null,0,"",'' 注意 ' ' 不为false,因为有空格 5.HTTP请求头是控制参数的重要类型,比如JSON协议,表单协议,下面说法正确的是 1.Accept-encoding:浏览器发给服务器,声明浏览器支持的编码类型,gzip,deflate 2.Accept:浏览器支持的MIME媒体类型,比如 text/htnl,application/json,image/webp等 3.orgin:告诉服务器请求从哪里发起,仅仅包括协议和域名CORS跨域请求中可以看到respose有对应的header
5.重绘和重排
重绘
重绘指的是不影响界面布局的操作,比如更改颜色,那么根据上面的渲染讲解我们知道,重绘之后我们只需要在重复进行一下样式计算,就可以直接渲染了,对浏览器渲染的影响相对较小
重排
重排指的是影响界面布局的操作,比如改变宽高,隐藏节点等。对于重排就不是一个重新计算样式那么简单了,因为改变了布局,根据上面的渲染流程来看涉及到的阶段有样式计算,布局树重新生成,分层树重新生成,所以重排对浏览器的渲染影响是比较高的
避免方法
js 尽量减少对样式的操作,能用 css 完成的就用 css
对 dom 操作尽量少,能用 createDocumentFragment 的地方尽量用
如果必须要用 js 操作样式,能合并尽量合并不要分多次操作
resize 事件 最好加上防抖,能尽量少触发就少触发
加载图片的时候,提前写好宽高
6.cache-control
max-age: 缓存过期时间,是一个相对时间
public: 表示客户端和代理服务器都会缓存
private: 表示只在客户端缓存
no-cache: 协商缓存标识符,表示文件会被缓存但是需要和服务器协商
no-store: 表示文件不会被缓存
7.如果想跳转到同一目录下名为success.html文件的名为show的锚点,下列写法正确的是 跳转
8.下面对项目性能优化有帮助的是 1.使用CDN 2.减少DOM元素数量 减少DOM操作
8.请写出一下代码执行的结果: for(var i=0;i<3:i++){ setTimeout(function(){ console.log(i) },100} } 3,3,3,3
9.React内,下面描述HOC高阶组件正确的是
1.高阶组件是React中用于复用组件逻辑的一种高级技巧; 2.Hoc是纯函数; 3.高阶组件的参数为组件,返回值为新组件的函数 4.HOC自身不是React API的一部分,他是一种基于React的组合特性而形成的设计模式
10.可以优化webpack打包速度 1.利用webpack-parallel-uglify-plugin 进行代码压缩 2.优化bable-loader 引入 happyPack、Dllplugin 3.懒加载、提取公共代码
11.哪些属性可以使行内元素支持换高 display:block;position:aboulute;float:left;