前端有关面试题

1.js有哪些内置对象

Object是js所有对象的父对象。数据封装对象:Object,Array,Boolean,Number,String,其他对象Function,Arguments,Math,Date,RegExp,Error

2.js中基本数据类型和引用数据类型区别

基本数据类型:Undefined,Null,Boolean,Number,String

引用数据类型:Object,Array,Date,RegExp,Function

区别:①基本数据类型在内存中占据固定大小空间,因此被保存在栈内存中,②引用数据类型的值是对象,保存在堆内存中,包含引用类型的变量实际上并不是指向该对象本身,而是指向对象的指针。③从一个变量向另一个变量复制引用类型的值,复制的其实是一个指针,因此两个变量最终都指向同一个对象④确定一个值是哪个基本数据类型可用typeof,确定一个值的引用数据类型可用instanceof

3.js数组

 //数组去重 var arr=[1,2,3,3,4]; var arr1=Array.from(new Set(arr)); console.log(arr1); //找出数组中重复出现的元素 function fn(arr) { var a = arr.sort(), b = []; for (var i in a) { if (a[i] == a[i - 1] && b.indexOf(a[i]) == -1) { console.log(a[i]) b.push(a[i]); } } return b } 

4.http协议中,get和post区别

get传送数据长度有限,post没有限制。

get通过URL传递,在浏览器地址可见,post在报文中传递。

post用于表单提交,get用于简单数据查询,严格要求不是那么高的场景

5.@import和link标签区别

①从属关系区别

@import是css提供的语法规则,只有导入样式表的作用,link是HTML标签,不仅可以加载css文件,还可以定义rel,Rss连接属性

②加载顺序区别:link标签引入的css在加载页面时被同时加载,@import引入的css将在页面加载后再加载

③兼容性区别@import是css2.1才有的语法,故只有IE5+才能识别,link为HTML元素,没有兼容性问题

④DOM可控性区别:可通过js操作dom,插入link标签改变样式,由于dom方法是基于文档的,无法使用@import方式插入

6.h5新增标签

<header></header>

<footer></footer>

<nav></nav>

<hgroup></hgroup>

<section></section>

<article></article>

<aside></aside>

<mark></mark>

<progress></progress>

<address></address>

<datalist></datalist>

<figure></figure>

<figure></figure>

<figcaption></figcaption>

7.js事件流模型

事件冒泡:事件开始由最具体的元素接受,然后逐级向上传播

事件捕获:事件由最不具体的节点先接受,然后逐级向下,一直到最具体的

DOM事件流:3个阶段,事件捕获,目标阶段,事件冒泡