js面试题
1.inline和block元素分别有哪些?区别是什么?
inline:内联元素,
a span strong em input select label img br teatarea
block:块状元素
p div ol li br
区别:
内联元素:
1.设置width和height无效
2.不能单独占一行,元素不会独占一行,其宽度随元素的内容而变化
3.padding和margin属性,padding-top,padding-bottom,margin-top,margin-bottom不产生边距,padding-left,padding-right,margin-left,margin-right产生边距
块状元素:1.可以设置width和height
2.单独占一行
3.元素不会独占一行,其宽度随元素的内容而变化
2.请解释relative、fixed、absolute和static元素的区别
fixed:相对定位,相对于浏览器定位
static:静态定位,默认,不定位,存在文本流中
absolute:绝对定位,相对于除了fixed的第一个父元素定位,脱离文本流中,在文本流中不存在位置
relaticve:相对定位, 脱离文本流,在文本流中存在位置
3.清除浮动方法
1.clear
clear:{clear:both;}
2.伪元素 :after
clearfix:after:{display:block;conteng:"";clear:both},兼容IE,.clearfix{zoom:1}
3.给父元素加高
4.overflow:hidden
4.请描述cookies、sessionStorage和localStorage的区别
共同点:都是保存在浏览器端,且同源的。
区别:
好处
5.
下面代码的输出是什么?
console.log('one'); setTimeout(function() { console.log('two'); }, 0); console.log('three');
//one
//three
/ two
6..call和.apply的区别是什么
call方法可以用来代替另一个对象调用一个方法。call方法可将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象。
如果没有提供thisObj参数,那么Global对象被用作thisObj。
apply方法:
语法:apply(thisObj,[argArray])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:
如果argArray不是一个有效的数组或者不是arguments对象,那么将导致一个TypeError。
如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。
7.如何判断一个对象是否是Array类型
1.通过toString()方法,数组原型和对象原型定义的toString()方法不同
var arr = [1, 2, 3]; var obj = { name: 'lyl', age: 18, 1: 'name' } console.log(Object.prototype.toString.call(arr) === '[object Array]'); //true console.log(Object.prototype.toString.call(boj) === '[object Array]'); //false
2.通过instanceof来判断区分
var arr = [1, 2, 3]; var obj = { name: 'lyl', age: 18, 1: 'name' } console.log(arr instanceof Array); //true console.log(obj instanceof Array); //false
3.通过length属性:
8.如何优化触发频率非常高的事件函数例如onscroll,oninput
http://www.qdfuns.com/notes/24933/53e06974b608ea30691fba9d8295fabb.html
9.如何克隆一个数组
第一种:用ary.slice(0) var ary = [1,2,3];//源数组 var ary2 = ary.slice(0);//克隆一个新数组 console.log(ary2);
第二种:push var cc=[1,3,2]
vara=[]
for(vari=0;i<cc.length;i++){
a.push(cc[i])
}
第三种 var newJson = json.concat();
10.javascript,es5,es6的区别
11.bootsrtap的优点
12.html5优点
13.flex布局优点,
14.eval是做什么的?
解析运行字符串
15.求y和z的值
<script>
var x=1;var y=0;var z=0;
function add(n){
n=n+1;
}
y=add(x)
function add(n){
n=n+1;
}
z=add(x)
</script>
//y和z都是number
16.js的三种主要类型,2种复合数据类型
Boolean,String,Number Object,Null
16.1.js原型,原型链是什么?优点是什么
原型:每个对象都有自己的属性(property),当访问一个对象的属性时,当前对象没有这个属性,就会继续往peoperty的原型上面找,直到找到object
优点:js 对象是通过引用传递的,创建的实例并没有自己的原型副本,我们修改原型时,与之相关的对象也会继承这一改变。
17.ajax的过程是怎么样的?
ajax是一种创建交互式网页应用的网页开发技术;
原理:在客户和服务器之间建立一个ajax引擎,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。
首先得了解什么是异步和同步的概念。
举个例子:比如你去图书馆借某种书,可惜图书馆此书被借完。这时可以采用两种做法。
第一种做法:在图书馆一直等待,直到有人还书,然后再去吃饭睡觉。
第二种做法:直接跟图书馆管理员约定,若是有人还书,直接通知你。你则该忙什么忙什么。到时候会通知你。
而第一种做法就是同步的表现,必须等待别人还书(等待服务器返回信息)才进行其他事情,至死方休。
而第二种做法就是异步的表现,不耽误时间,合理利用时间高效率做事。
遇到这种情况,你会采用那种办法呢?
选择第一种,哈哈,说明你太执着啦;选择第二种,说明你灵活变通,合理安排自己的人生。你自己看着办吧。
好处是:不用页面刷新,并且在等待页面传输数据的同时可以进行其他操作。
18.get和post的区别
get:快,不安全,数据量小 post:相反
19.innerHTML,innerText,outerHTML,outerText的区别
innerHTML:获取标签内的html,
outerHTML:获取标签和标签内的htm
outerText和innerText都是获取标签内的文本
20.解释js的同源策略,为什么有同源限制?
跨域是指 不同域名之间相互访问
这里的同源指的是:同协议,同域名和同端口,防止跨域请求
防止黑客侵入;百度阿里的数据让你乱搞
21.跨域问题是如何产生的?有哪几种解决方案?
不同协议,不同域名,不同端口
document.domain + iframe ;动态创建script;jsonp;document.main;location hash+iframe;web sockets;cors;postMessage;window.name + iframe
22.写出js对象的深度克隆的方法
23.cookie的弊端?使用cookie要注意什么?
24.用js编写创建、读取、删除cookie的操作
优质内容筛选与推荐>>