js简单的面试题
程序员文章站
2022-07-12 16:55:41
...
0,截取字符串abcdefg中的efg
var str = 'abcdefg'; alert(str.substr(4,3));
1,js有哪些数据类型,数据类型的判断函数?
String,Number,Boolean,Null,Undefined,Object
判断函数有:typeof,instanceof,constructor,prototype
接下来我们一一对这些进行举例子。
var a = 'nihao'; var b = 222; var c = [1,2,3]; var d = new Date(); var e = function(){alert('hanshu');}; var f = function(){this.name = 'hanmeimei'}; alert(typeof a);//string alert(typeof a == String);// false alert(typeof b);// number alert(typeof c);// object alert(typeof d);// object alert(typeof e);// function alert(typeof f);// function alert(c instanceof Array);//true alert(e instanceof Function);//true alert(c.constructor === Array);//true function A(){}; function B(){}; A.prototype = new B(); //A继承自B注意: constructor 在类继承时会出错 var aObj = new A(); alert(aObj.constructor === B);// -----------> true; alert(aObj.constructor === A);// -----------> false; //而instanceof方法不会出现该问题,对象直接继承和间接继承的都会报true: alert(aObj instanceof B); //----------------> true; alert(aObj instanceof A); //----------------> true; //解决construtor的问题通常是让对象的constructor手动指向自己: aObj.constructor = A;//将自己的类赋值给对象的constructor属性 alert(aObj.constructor === B);// -----------> flase; alert(aObj.constructor === A);//true //prototype alert(Object.prototype.toString.call(a) === '[object String]');//true; alert(Object.prototype.toString.call(b) === '[object Number]');//true; alert(Object.prototype.toString.call(c) === '[object Array]');//true; alert(Object.prototype.toString.call(d) === '[object Date]');//true; alert(Object.prototype.toString.call(e) === '[object Function]');//true; alert(Object.prototype.toString.call(f) === '[object Function]');//true;
2,编写一个js函数,时时显示当前时间,格式:“年-月-日 时:分:秒”
function nowtime(){ var nowDate = new Date(); var year = nowDate.getFullYear(); var month = nowDate.getMonth() + 1; var day = nowDate.getDate(); var hours = nowDate.getHours(); var minutes = nowDate.getMinutes(); var second = nowDate.getSeconds(); return year + '-' + month + '-' + day +' '+hours+':'+minutes +':'+second; } alert(nowtime());
3,显示隐藏dom元素
使用jquery
$(function(){ $("#div").show(); $("#div").hide(); });
4,如果添加HTML元素的事件处理,几种方法
a,直接元素中添加:
<a href="###" onclick="fn();" >click</a>
b,找到dom节点如:
var ob = document.getElementById("div"); ob.onclick = function(){};
c,使用jquery添加静态的dom节点的事件
$("#div").click(function(){}); //动态生成的节点的话: $("#div").on("click",function(){}); $("#div").live("click",function(){});
5,如何控制alert中的换行
alert('nihao\nnihao');或者 alert('nihao'+'\n'+'nihao');
6,判断字符串中出现次数最多的字符,统计这个次数。
//判断一个字符串中出现次数最多的字符,统计这个次数 //方法一 var str="aabbb"; var obj={}; for(var i=0,k;i<str.length;i++){ k=str.charAt(i);//charAt() 方法可返回指定位置的字符。 if(obj[k]){ obj[k]++; }else{ obj[k]=1; } } var m=0; var i=null; for(var k in obj){ if(obj[k]>m){ m=obj[k]; i=k; } } alert(i+':'+m); //方法二 var str ="aaaaaaaaaaabbb"; for(var i=0,len=0,temp="";i<str.length; i++){ var s=str.substr(i,1);//substr()方法可在字符串中抽取从 start 下标开始的指定数目的字符。 var tt=str.split(s);//split()方法用于把一个字符串分割成字符串数组。 if(tt.length>len){ len=tt.length; temp=s+"出现最多次数为"+len; } } alert(temp);
7,判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母,数字,下划线,总长度为5-20
有两种方案,一种是传统的遍历每个字符来判断,这种会比较麻烦。另一种是用正则来判断比较方便。
下面是正则的例子
//判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20 var str = 'abcdefg'; var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; alert(reg.test(str));
8,写一个字符串转成驼峰的方法:
如:border-bottom-color 》 borderBottomColor
这个也是有两种方法,一种是传统的和一种正则表达式
var str = "border-bottom-color"; function test(str){ var arr = str.split("-");//用split()函数来进行分割字符串arr里面包括【border,bottom,color】 for(var i=1;i<arr.length;i++){//从数组的第二项开始循环,charAt(0)找到第一个字母。substring(1)截掉第一个字母。 arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);//循环之后把得到的字符赋给arr。【border,Bottom, Color】 alert(arr[i]); } return arr.join("");//用join方法来拼接,空拼接。就变成borderBottomColor } alert(test(str));
var str = "border-bottom-color"; function test(str){ var re = /-(\w)/g;//通过正则找到-b -c。默认的是匹配一次,所以要用g来全局匹配。\w指的字符。找一个-找一个字符。replace替换就是B替换-b C替换-c。 $0代表正则,$1代表指向 return str.replace(re, function($0,$1){ return $1.toUpperCase(); }); } alert(test(str));
9,请编写一个javascript函数parseQueryString,他的用途是把URL参数解析为一个对象,如:
var url=“http:witmax,cn/index.php?key0=0&key1=1&key2=2”;
function parseQueryString(url) { var json = {}; var arr = url.substr(url.indexOf('?') + 1,url.length).split('&'); arr.forEach(function(item) { var tmp = item.split('='); json[tmp[0]] = tmp[1]; }) return json; } //或者 function parseQueryString(url) { var obj={}; var keyvalue=[]; var key="",value=""; var paraString=url.substring(url.indexOf("?")+1,url.length).split("&"); for(var i in paraString){ keyvalue=paraString[i].split("="); key=keyvalue[0]; value=keyvalue[1]; obj[key]=value; } return obj; } var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2"; var json = parseQueryString(url); console.log(json);
很多题目未完待续
上一篇: 处处留心皆学问