2019前端面试题整理(经典20题)
1. javascript的typeof返回哪些数据类型
string,boolean,number,undefined,function,object
2. split()和 join() 的区别
前者是将字符串切割成数组的形式,后者是将数组转换成字符串
3.call和apply的区别
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
4. 如何阻止事件冒泡
ie:阻止冒泡ev.cancelBubble = true;非IE ev.stopPropagation();
5.添加 删除 替换 插入到某个接点的方法
1)创建新节点 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 2)添加、移除、替换、插入 appendChild() //添加 removeChild() //移除 replaceChild() //替换 insertBefore() //插入 3)查找 getElementsByTagName() //通过标签名称 getElementsByName() //通过元素的Name属性的值 getElementById() //通过元素Id,唯一性
6.document load 和document ready的区别
document.onload 是在结构和样式,外部js以及图片加载完才执行js document.ready是dom树创建完成就执行的方法,原生种没有这个方法,jquery中有 $().ready(function)
7.函数声明与函数表达式的区别?
在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),
至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。
8.看下面代码,给出输出结果
for(var i = 1; i <= 3; i++){ //建议使用let 可正常输出i的值 setTimeout(function(){ console.log(i); },0); }; 答案:4 4 4。 原因:Javascript事件处理器在线程空闲之前不会运行。
9.看下列代码,输出什么?解释原因
var a = null; alert(typeof a); 答案:object 解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。
10.null和undefined的区别?
null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。 当声明的变量还未被初始化时,变量的默认值为undefined。 null用来表示尚未存在的对象 undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是: (1)变量被声明了,但没有赋值时,就等于undefined。 (2)调用函数时,应该提供的参数没有提供,该参数等于undefined。 (3)对象没有赋值的属性,该属性的值为undefined。 (4)函数没有返回值时,默认返回undefined。 null表示"没有对象",即该处不应该有值。典型用法是: (1) 作为函数的参数,表示该函数的参数不是对象。 (2) 作为对象原型链的终点。
11.js延迟加载的方式有哪些?
defer和async、动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)、按需异步载入js
12.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
var inputs = document.getElementsByTagName("input");//获取所有的input标签对象 var checkboxArray = [];//初始化空数组,用来存放checkbox对象。 for(var i=0;i<inputs.length;i++){ var obj = inputs[i]; if(obj.type=='checkbox'){ checkboxArray.push(obj); } }
13.写一个function,清除字符串前后的空格。(兼容所有浏览器)
String.prototype.trim= function(){ return this.replace(/^\s+/,"").replace(/\s+$/,""); }
14.Cookie在客户机上是如何存储的?
Cookies就是服务器暂存放在你的电脑里的文本文件,好让服务器用来辨认你的计算机。
当你在浏览网站的时候,Web服务器会先送一部分资料放在你的计算机上,Cookies 会帮你在网站上所打的文字或是一些选择都记录下来。
当下次你再访问同一个网站,Web服务器会先看看有没有它上次留下的Cookies资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你。
15.form中的input可以设置为readonly和disable,请问2者有什么区别?
readonly不可编辑,但可以选择和复制;值可以传递到后台
disabled不能编辑,不能复制,不能选择;值不可以传递到后台
16.程序中捕获异常的方法?
try{ }catch(e){ }finally{ }
17.Ajax原理
(1)创建对象 var xhr = new XMLHttpRequest(); (2)打开请求 xhr.open('GET', 'example.txt', true); (3)发送请求 xhr.send(); 发送请求到服务器 (4)接收响应 xhr.onreadystatechange =function(){} (1)当readystate值从一个值变为另一个值时,都会触发readystatechange事件。 (2)当readystate==4时,表示已经接收到全部响应数据。 (3)当status ==200时,表示服务器成功返回页面和数据。 (4)如果(2)和(3)内容同时满足,则可以通过xhr.responseText,获得服务器返回的内容。
18.降维数组
var arr=[[1,2],[3,4]]; function Jw(obj){ return Array.prototype.concat.apply([],obj); } Jw(arr);
19.为什么利用多个域名来存储网站资源会更有效
确保用户在不同地区能用最快的速度打开网站,其中某个域名崩溃用户也能通过其他郁闷访问网站
20.请说出减低页面加载时间的方法
1、压缩css、js文件 2、合并js、css文件,减少http请求 3、外部js、css文件放在最底下 4、减少dom操作,尽可能用变量替代不必要的dom操作