前端面试题1

2017-07-07  本文已影响0人  sakatayui酱

1.JS闭包。

f = function() {return true;}; 

g = function() {return false;}; 

(function() { 

  if (g() && [] == ![]) { 

      f = function f() {return false;}; 

      function g() {return true;} 

  } 

})(); 

alert(f()); // true or false ? 

答案:

(function() {   

  if (g() && [] == ![]) {   

//应该看成if((g() && [] )== ![]) 

//因为g()是false后面那个&&[]就没起作用 整个都是false   

//![]也是false 所以if成立 进入if块内 

      f = function f() {return false;};   

//重新定义f   

      function g() {return true;}   

//这句没用 

  }   

})();   

alert(f()); 

//false 

2.写出程序运行的结果?

for(i=0, j=0; i<10, j<6; i++, j++){

k = i + j;

k=10

3.编写一个方法 去掉一个数组的重复元素

var arr = [1,2,3,1,43,12,12,1];

var json = {};

var arr2 = [];

for (var i = 0; i < arr.length; i++) {

        if(!json[arr[i]]){

                json[arr[i]] = true;

        }else{

                json[arr[i]] = false;

        }

        if(json[arr[i]]){

                arr2.push(arr[i]);

        }

};

for (var i = 0; i < arr.length; i++) {

        if(!aa(arr[i], arr2)){

                arr2.push(arr[i])

        }

};

function aa(obj, arr){

        for (var i = 0; i < arr.length; i++) {

                if(arr[i] == obj) return true;

                else return false;

        };

}

alert(arr2)

4.JavaScript中如何检测一个变量是一个String类型?请写出函数实现

typeof(obj) == 'string'

obj.constructor == String

5.请说出三种减低页面加载时间的方法

1、压缩css、js文件

2、合并js、css文件,减少http请求

3、外部js、css文件放在最底下

4、减少dom操作,尽可能用变量替代不必要的dom操作

6.请尽可能详尽的解释AJAX的工作原理。

创建ajax对象(XMLHttpRequest/ActiveXObject(Microsoft.XMLHttp))

判断数据传输方式(GET/POST)

打开链接 open()

发送 send()

当ajax对象完成第四步(onreadystatechange)数据接收完成,判断http响应状态(status)200-300之间或者304(缓存)执行回调函数

7.行内元素有哪些?块级元素有哪些?CSS的盒模型?

块级元素:div p h1 h2 h3 h4 form ul

行内元素: a b br i span input select

Css盒模型:内容,border ,margin,padding

8.清除浮动的几种方式,各自的优缺点

1.使用空标签清除浮动 clear:both(理论上能清楚任何标签,,,增加无意义的标签)

2.使用overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)

3.是用afert伪元素清除浮动(用于非IE浏览器)

9.IE和标准下有哪些兼容性的写法

Var ev = ev || window.event

document.documentElement.clientWidth || document.body.clientWidth

Var target = ev.srcElement||ev.target

10.解释jsonp的原理,以及为什么不是真正的ajax

动态创建script标签,回调函数

Ajax是页面无刷新请求数据操作

上一篇下一篇

猜你喜欢

热点阅读