前端面试题汇总1

来源:互联网 发布:西安三星项目瘫痪 知乎 编辑:程序博客网 时间:2024/05/27 14:15

1、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母

数字、下划线,总长度为5-20

var str="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa2afxsld_sldkjie232";var reg=/^[a-zA-Z][a-zA-Z0-9_]{4,19}$/;alert(reg.test(str));

2、截取字符串abcdefgefg

var str="abcdefg";var re=str.substr(str.indexOf("efg"),3);alert(re);

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

var str="aabbbbbbbbbbbbbcedwwefaasdio0sda";var obj={};var ret=[];for(var i=0;i<str.length;i++){    var key=str[i];    if(!obj[key]){        obj[key]=1;        ret.push(key);    }else{        obj[key]++;    }}var max=-1;var key_max="";for(var i=0;i<ret.length;i++){    var key=ret[i];    if(max<obj[key]){        max=obj[key];        key_max=key;    }}alert("出现最多的字符是:"+key_max+" 出现次数是:"+max);
4、IE和FF脚本兼容问题

(1)关于event的用法,ie中可以直接使用event对象,但是Firefox中不可以直接使用

IE下可以直接用:

<input type="button" value="click" onclick="doIt();"><script>   function doIt(){       alert(event);   }</script>
Firefox下要修改:

<input type="button" value="click" onclick="doIt(event);"><script>   function doIt(oEvent){       alert(oEvent);   }</script>
(2)事件绑定和解除:ie中是attachEvent和detachEvent,Firefox中是addEventListener和removeEventListenter

5、规避JavaScript多人开发函数重命名问题

(1)可以开发前规定命名规范,根据不同开发人员开发的功能在函数前加前缀

(2)将每个开发人员的函数封装到类中,调用时就调用类的函数,即使函数重名只要类名不重复就OK

6、JavaScript面向对象中继承实现

JavaScript面向对象中的继承实现一般都是用了构造函数和prototype原型链

7、编写一个方法,求一个字符串的字节长度,假设一个英文字符占用一个字节,一个中文字符占用两个字节

function getLength(str){    return str.replace(/[^\x00-xff]/g,"xx").length;}
8、编写一个方法,去掉数组的重复元素

var arr=[1,2,3,4,2,4,2,4];var obj={};var ret=[];for(var i=0;i<arr.length;i++){    var key=arr[i];    if(!obj[key]){        obj[key]=1;        ret.push(key);    }}alert(ret);
9、写出3个使用this的典型应用

(1)在HTML元素事件属性中使用,例如:

<input type="button" value="click" onclick="alert(this.type);">

(2)构造函数

function animal(name,color){    this.name=name;    this.color=color;}

(3)css expression表达式中使用this关键字

<table>    <tr>        <td>            <div style="width:expression(this.parentNode.width);"></div>        </td>    </tr></table>
10、如何显示/隐藏一个DOM元素?

obj.style.display="block";//inline-blockobj.style.display="none";
obj是要操作的DOM元素






0 0