1.javascript的typeof返回哪些数据类型?
答:string,number,boolean,undefined,Object,Function,symbol(ES6)
2.行内元素和块级元素的区别?
答: 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。
块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。
3.CSS选择符有哪些?
答:通配符选择器 *
标签选择器 p,span
类选择器 .box
id选择器 #p1
子选择器 ul>li
后代选择器 ul li
相邻兄弟选择器 h+p
通用兄弟选择器 h~p
属性选择器 E[foo^="bar"]
伪类选择器 E:first-of-type
这里有一篇详细的css选择器问文章.戳戳http://www.cnblogs.com/libingql/p/4375354.html
4.清除浮动的几种方法(至少两种),各自优缺点?
5.call和apply的区别?
答:这两种方法都是调用一个对象的一个方法,以另一个对象替换当前对象。
语法:
call(thisObj, arg1,arg2,arg3...)
apply(thisObj, [arg1,arg2,arg3...])
区别:参数不同.call以罗列的形式传参,apply以数组的形式传参
6.如何阻止事件冒泡和默认事件?
阻止冒泡:event.stopPropagation(); event.cancelBubble = true(IE)
阻止默认事件:event.preventDefault()
比较暴力的方法 return false 它会同时阻止事件冒泡也会阻止默认事件
7.http状态码知道哪些?
见之前我写过的文章.猛戳:[常见的http状态码]
(http://www.jianshu.com/p/e87609b0d3d3)
8.你有哪些性能优化的方法?
- 减少http请求,合理设置 HTTP缓存
- 使用浏览器缓存
- 启用压缩
- CSS Sprites 合并 CSS图片,减少请求数的又一个好办法
- LazyLoad Images
- CSS放在页面最上部,javascript放在页面最下面
- 异步请求
详细可看前端性能优化归纳总结篇!!!
9.如何实现同一个浏览器内多个标签页之间的通信?
调用localstorge、cookies等本地存储方式。
方法一:
localstorge在一个标签页里被添加、修改或删除时,都会触发一个storage事件,通过在另一个标签页里监听storage事件,即可得到localstorge存储的值,实现不同标签页之间的通信。
方法二:
使用cookie+setInterval,将要传递的信息存储在cookie中,每隔一定时间读取cookie信息,即可随时获取要传递的信息。
详细http://blog.csdn.net/zhouziyu2011/article/details/58595904
10.谈谈你对MVC和MVVM的理解
可以看一下浅谈MVC和MVVM模式
11.下面程序的结果
function fun(n,o) {
console.log(o);
return {
fun:function(m) {
return fun(m,n);
}
};
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3); //undefined,0,0,0
var b = fun(0).fun(1).fun(2).fun(3); //undefined,0,1,2
var c = fun(0).fun(1); c.fun(2); c.fun(3); // undefined,0,1,1
12.下面程序的结果是
var funcs = [];
for(var i = 0;i<10;i++){
funcs.push(function () {
console.log(i);
})
}
funcs.forEach(function (func) {
func();
})
10个10
13.在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标?
http://www.cnblogs.com/liugang-vip/p/6617988.html
14.编写一个函数foo(n);a)参数n是正数;b)该函数返回一个数组;c)该数组内是n个随机且不重复的正数;d)整数的范围是11到41
function getRand(a,b){
var rand = Math.round(Math.random()*(b-a)+a);
return rand;
}
function checkArrIn(rand,array){
if(array.indexOf(rand) > -1){
return true
}
return false;
}
function fn(n, min, max) {
var arr = [];
var isNum = !isNaN(Number(n));//判断n是不是一个数字,包含字符串类型的数字
var isRandOk = (n >= min && n <= max && n <= (max - min)) ? true : false;//判断n的取值是否符合要求
if (n && isRandOk && isNum) {
for (var i = 0; i < n; i++) {
var rand = getRand(min, max);
if (checkArrIn(rand, arr)) {
i--
} else {
arr.push(rand)
}
}
}
return arr;
}
console.log(fn(10, 1, 11));