js面试题集锦1

1、typeof可以判断哪些变量类型

答:number、string、boolean、undefind四种值类型,还有对象、数组、函数三种引用类型。只能区分值类型,引用类型只能区分函数。

2、===与==的使用条件

答:通常情况下都使用===,只有当if判断if(obj.a==null){}(jq源码的判断相当于同时判断了obj.a===null||obj.a===undefind)。

3、js中有哪些内置对象

答:object、Array、number、boolean、string、function、date、regexp、error

4、js变量按照存储方式区分为哪些类型,描述其特点

答:a.值类型,一个值占存储一个存储区块

b.引用类型,几个相同值公用一个存储区块儿,赋值给新对象只是相当于指针指向当前对象。

5、如何判断一个函数是否是一个变量的构造函数

答:instanceof。

扫描二维码关注公众号,回复: 1792351 查看本文章

6、5个原型规则(非面试题)

答:a.所有的引用类型(对象、数组、函数),都有对象特性,即可自由扩展属性(null除外)。

b.所有的引用类型,都有一个_proto_(隐式原型)属性,属性值是一个普通的对象。

C.所有的引用类型,都有一个prototype(显式原型)属性,属性值是一个普通的对象。

d.所有的引用类型,_proto_的属性值指向他的构造函数的prototype的值。

e.当试图得到一个引用类型的一个属性时,如果这个对象本身没有这个属性,那么会去它的_proto_(即他的构造函数的prototype)中寻找

7. 如何准确判断一个变量是数组类型?

答:instanceof.

8. 写一个原型链继承的例子?

答:function Elem(id){

this.ele=document.getElementById(id);

}

Ele.prototype.html=function(val){

Var ele=this.ele;

if(val){

ele.innerHtml=val;

}

Return this;

}

Ele.prototype.on=function(type,fn){

Var ele=this.ele;

ele.addEventListenner(type,fn);

Return this;

}

Var div1=new Ele(“div1”);

div1.html(“<p>好好学习,天天向上<p>”).on(“click”,function(){

  Alert(“好好学习天天向上”);

})

9、this的执行环境

答:a.作为构造函数执行;

b.作为对象属性执行;

C.作为普通函数执行;

D.call,apply,bind等;

10、同步和异步的区别是什么,分别举一个例子;

答:同步会阻塞程序运行,异步不会;alert是同步,定时是异步。

11、前端使用异步的场景有哪些?

答:a.定时:setTimeout、setInterval;

B.网络请求:ajax。Img加载;

C.事件绑定。

12、从输入url到得到html的详细过程?

答:a.页面加载资源的形式(1)输入url,加载html;(2)加载html里边的静态资源;

b.加载一个资源的过程(1)浏览器根据DNS服务器得到域名的ip地址;(2)向这个ip的机器发送http请求;(3)服务器收到、处理并返回http请求;(4)浏览器收到返回内容;

c.浏览器渲染页面的过程(1)根据html结构生成Dom Tree;(2)根据css生成cssom;(3)将dom和cssom整合形成rendertree(4)根据rendertree,开始渲染和展示;(5)遇到<script>时,会执行并阻塞渲染;

13、window.onload和DomContentLoaded的区别是什么?

答:window.onload是等页面的 所有内容加载完才执行,包括图片视频等;

DomContentLoaded是dom渲染完就可执行,这时可能图片视频还没有加载完。

14、性能优化

答:a:加载资源优化(1)静态资源的压缩合并;(2)静态资源缓存(3)使用cdn使资源加载更快;(4)使用ssr后端渲染,数据直接输出到html中

b.渲染优化(1)css放前边,js放后边;(2)、懒加载(图片懒加载,下拉加载更多);(3)减少dom操作;(4)、事件节流(5)尽早执行操作(如domContentLoaded)

猜你喜欢

转载自blog.csdn.net/weixin_39141802/article/details/79522919
今日推荐