前端面试题

1、Javascript包括哪些数据类型,请分别编写3种以上类型的判断函数,如:isString()?

字符串、数字、布尔、数组、对象、null、undefined

isNumber()?  isArray()?    isObject()? 

2、编写一个JavaScript函数,实时显示当前时间,格式”年—月—日  时:分:秒 ?

 <html> 

<head>
<script>
    function getTime() {
        var now_Date = new Date();
        var nowYear;
        var nowMonth;
        var nowDay;
        var nowdate;
        var nowHourse;
        var nowMinutes;
        var nowSeconds;
        nowYear = now_Date.getFullYear();
        nowMonth = now_Date.getMonth() + 1;
        nowDay = now_Date.getDay();
        nowdate= now_Date.getDate();
        nowHourse = now_Date.getHours();
        if(nowHourse == 0){
            nowHourse = 12;
        }
        nowMinutes = now_Date.getMinutes();
        nowSeconds = now_Date.getSeconds();
        var timeDetails = nowYear+'-'+nowMonth+'-'+nowdate+' '+nowHourse+':'+nowMinutes+':'+nowSeconds;
        alert(timeDetails);
     document.getElementById("input").value = str;

    }
   window.setInterval("getTime()", 1000);
</script>
</body>
</html>

3、如何显示/隐藏一个DOM元素?

     答案:显示:object.style.display="";

              隐藏:object.style.display="none";

 

4、如何添加html元素的事件处理,有几种方法?

    答案:html的元素的事件就只用控件自带的的那么几个,如onclick,onmouserdown ,..等等都是调用脚本执行

            方法:1、在空间上写直接激发事件

                      2、在页面加载的时候就调用脚本激发控件的某个事件

                      3、在后台利用后台代码强行执行控件的事件。

   或:

1) 为HTML元素的事件属性赋值

2) 在JS中使用ele.on*** = function() {…}

3) 使用DOM2的添加事件的方法 addEventListenerattachEvent

5、如何控制alert中的换行?

   答案:\n alert("text\ntext");

             alert("再打个招呼。这里演示了" + "\n" + "如何在消息框中添加折行。")

6、判断一个字符串中出现次数最多的字符,统计这个次数

    代码:

<html>
<body>
<script>
var str = "abcdefgaddda";
var obj = {};
for (var i = 0, l = str.length; i < l; i++) {
var key = str[i];
if (typeof obj[key] == 'undefined') {
obj[key] = 1;
} else {
obj[key]++;
}
}
var max = -1;
var max_key = "";
var key;
for (key in obj) {
if (max < obj[key]) {
max = obj[key];
max_key = key;
}
}
alert("字符:"+max_key+" 出现次数:"+max);
</script>
</body>
</html>

7、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20.

 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;

 reg.test("a1a__a1a__a1a__a1a__");

8、请编写一个Javascript函数parseQueryString,它的用途是把URL参数解析为一个对象,如 var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2";function parseQueryString(url){   var params = {};   var arr = url.split("?");   if (arr.length <= 1)      return params;   arr = arr[1].split("&");   for(var i=0, l=arr.length; i<l; i++){      var a = arr[i].split("=");      params[a[0]] = a[1];   }   return params;}var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2";var ps = parseQueryString(url);alert(ps["key1"]);

9、在页面中有如下html : <div id="firld">

                                       <input type="text" value="User Name"/>

                                </div>

                          <span class="red"></span>

需求用闭包方式写一个JS,从文本框中取出值,并在标签 span中显示出来。

 

10、在 IE 6.0下面是不支持position:fixed 的,请写一个JS使用<div id="box"></div>固定在页面的右下角。

 

11、请实现,鼠标移到页面中的任意标签,展示出这个标签的基本矩形轮廓。

 

12、js的基础对象有哪些,window 和 document 的常用的方法和属性列出来。

  String,Number,Boolean

Window:

方法:setInterval,setTimeout,clearInterval,clearTimeout,alert,confirm,open

属性:name,parent,screenLeft,screenTop,self,top,status

Document

方法:createElement,execCommand,getElementById,getElementsByName,getElementByTagName,write,writeln

属性:cookie,doctype,domain,documentElement,readyState,URL,

 

13、javascript 中如何对一个对象进行深度clone

     function cloneObject(o) {    if(!o || 'object' !== typeof o) {        return o;    }    var c = 'function' === typeof o.pop ? [] : {};    var p, v;    for(p in o) {        if(o.hasOwnProperty(p)) {            v = o[p];            if(v && 'object' === typeof v) {                c[p] = Ext.ux.clone(v);            }            else {                c[p] = v;            }        }    }    return c;};

14、js 中如何定义class ,如何扩展prototype ?

Ele.className = “***”; //***css中定义,形式如下:.*** {…}

A.prototype.B = C;

A是某个构造函数的名字

B是这个构造函数的属性

C是想要定义的属性的值

15、ajax是什么?ajax的交互模型?同步和异步的区别如何解决跨域问题?

   Ajax是多种技术组合起来的一种浏览器和服务器交互技术,基本思想是允许一个互联网浏览器向一个远程页面/服务做异步的http调用,并且用收到的数据来更新一个当前web页面而不必刷新整个页面。该技术能够改进客户端的体验。包含的技术:

XHTML:对应W3CXHTML规范,目前是XHTML1.0

CSS:对应W3CCSS规范,目前是CSS2.0

DOM:这里的DOM主要是指HTML DOMXML DOM包括在下面的XML

JavaScript:对应于ECMAECMAScript规范

XML:对应W3CXML DOMXSLTXPath等等规范

XMLHttpRequest:对应WhatWGWeb Applications1.0规范(http://whatwg.org/specs/web-apps/current-work/

AJAX交互模型

同步:脚本会停留并等待服务器发送回复然后再继续

异步:脚本允许页面继续其进程并处理可能的回复

跨域问题简单的理解就是因为JS同源策略的限制,a.com域名下的JS无法操作b.comc.a.com下的对象,具体场景如下:

PS:(1)如果是端口或者协议造成的跨域问题前端是无能为力的

(2) 在跨域问题上,域仅仅通过URL的首部来识别而不会尝试判断相同的IP地址对应的域或者两个域是否对应一个IP

前端对于跨域的解决办法:

(1) document.domain+iframe

(2) 动态创建script标签

16、请给出异步加载js方案,不少于两种。

     默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页头会导致加载很慢的话,是会严重影响用户体验的。

异步加载方式:

(1) defer,只支持IE

(2) async

(3) 创建script,插入到DOM中,加载完毕后callBack,见代码:function loadScript(url, callback){   var script = document.createElement("script")   script.type = "text/javascript";   if (script.readyState){ //IE      script.onreadystatechange = function(){         if (script.readyState == "loaded" ||            script.readyState == "complete"){            script.onreadystatechange = null;            callback();         }      };   } else { //Others: Firefox, Safari, Chrome, and Opera      script.onload = function(){          callback();      };   }   script.src = url;   document.body.appendChild(script);}

17、多浏览器检测通过什么?

  1) navigator.userAgent

  2) 不同浏览器的特性,如addEventListener

18、讲述一下你所了解的前端开发的优化方式

 


你可能感兴趣的:(前端面试题)