js面试

1.获取一堆name名相同的div,点击弹出显示第几个div

(本题主要考察闭包的用法,是在面试中常被问的题目,不难但是比较容易上当的题目)

var boxes = document.getElementsByTagName("div");

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

boxes[i].index = i+1;

boxes[i].onclick = function() {

alert(this.index);

}

}

答案二

var boxes = document.getElementsByTagName("div");

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

(function(i){

boxes[i].onclick = function() {

alert(i+1);

}

})(i);

}

2.abcdefgsdds 获取里面字面最多的字母(答案有很多)

var str = “abcdefgsdds”;

var obj = {};

var arr = [];

var letter;

for(var i = 0,len = str.length;i

letter = str[i];

if(!obj[letter]){

obj[letter] = 1;

}else{

obj[letter]++;

}

}

var max_key,max_num=0;

for(key in obj){

if(max_num

max_num = obj[key];

max_key = key;

}

}

document.write(“字母:”+max_key+” 次数:”+max_num);


3.abcdefghi 获取ghi怎么实现

答:”abcdefghi".substring(6)


4.‘asdjhklzxc’ 截取’asd’

答:”asdjhklzxc".substring(3,-1)


5.翻转字符串

答:”asd".split("").reverse().join("")


6.删除数组第一个元素

答:arr.shift()


7.[1,2,1,3,2,3,5,6,5]  去除重复元素

var arr = [1,2,1,3,2,3,5,6,5] ;

var newArr = [];

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

if(newArr.indexOf(arr[i]) == -1) {

newArr.push(arr[i]);

}

}

alert(newArr)


7.JS中有几种数据类型分别是哪几种?

答:Number,String,Boolean,Object,Null,Undefined


8.说一下拖拽的原理?怎么样实现多个DIV在拖拽时有相撞让它们改变属性与属性值和他们的位置?(部分程度不太好的看到拖拽会懵,项目期有这个情况)

mousedown,mousermove,mouseup事件

e.clientX,e.clientY 鼠标位置

碰撞检测


9.用JS创建一个a标签,在body中显示,点击在新窗口打开

var alink = document.createElement("a");

alink.innerHTML = "google";

alink.href = "http://www.google.com";

alink.target = "_blank";

document.body.appendChild(alink);


10.鼠标滚轮动画

function mousewheel(element,up,down) {

element.onmousewheel = fn;

if(window.addEventListener) {

element.addEventListener("DOMMouseScroll",fn,false)

}

function fn(e) {

var e = e || window.event;

console.log(e);

if(e.wheelDelta > 0 || e.detail < 0) {

up();

}else {

down();

}

e.cancelBubble = true;

e.stopPropagation();

}

}

mousewheel(document,function(){},function(){})//函数调用


12.定位右下角广告

答:使用css position:fixed


13.鼠标经过A  A变大其他的位置不动

答:A绝对定位,脱离文档流即可


14.JS中避免命名冲突的三个方法(有些同学或许会想不到这些概念)

答:命名空间,闭包,匿名函数


15.JS在HTML中的引入方式有哪些?又有什么优缺点?

答:a外部引入b内部嵌套c行内代码例:按钮 对比css引入


16.写出5条标识符的命名规范()

答:1.区分大小写;

2.第一个字符必须是一个字母、下划线(_)或一个美元符号($)

3..不能含有空格

4.不能以关键字或保留字命名,不能以数字开头

17.从JS的角度,写出8条以上优化代码的方法?

答:参考http://www.haorooms.com/post/web_xnyh_jscss


18.按优先级,对这几种运算符进行排序:!&&  *  =  >

答:!&& *> =


19.在循环中,break和continue语句的功能有何不同

答:break 终止整个循环,continue终止当次循环


20.解释事件冒泡、事件捕获的区别

答:事件流解释即可


21.说说什么叫做事件委托

答:利用事件冒泡的原理,子元素的事件会冒泡到父元素,可以只给父元素添加事件,通过事件目标判断元素。优点:节省内存,动态添加的子元素也包含事件


22.列举不少于6条的IE与FF脚本兼容性问题,需要写出命令(也许同学们缺乏总结,看着简单,实际很难答全)

(1) window.event:

表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象

(2) 获取事件源

IE用srcElement获取事件源,而FF用target获取事件源

(3) 添加,去除事件

IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)

FF:element.addEventListener(“click”, function, true) element.removeEventListener(“click”, function, true)

(4) 获取标签的自定义属性

IE:div1.value或div1[“value”]

FF:可用div1.getAttribute(“value”)


(5) document.getElementByName()和document.all[name]

IE;document.getElementByName()和document.all[name]均不能获取div元素

FF:可以

(6) input.type的属性

IE:input.type只读

FF:input.type可读写

(7) innerText textContent outerHTML

IE:支持innerText, outerHTML

FF:支持textContent

(8) 是否可用id代替HTML元素

IE:可以用id来代替HTML元素

FF:不可以


23.构造函数有何优缺点?

答:构造函数可以创建多个对象,

缺点:容易跟普通函数一样调用


24.用自己的话描述一下“闭包“

答:函数内部又定义了一个函数,内部函数引用外部函数的变量,就构成了闭包


25.用自己的话描述一下对“异步“和”同步“的理解

同步:按顺序执行,同一时刻只能执行一个事件

异步:不按顺序执行,同一时刻可以执行多个任务


26.写倒计时距离2018年还有多少天多少小时多少分钟多少秒

var time = document.getElementById("time");

function clock() {

//设置目标日期

var targetDate = new Date(2018,0,1);

var currentDate = new Date();

var remainTime = targetDate - currentDate;

//天数

remainDay = parseInt(remainTime/1000/60/60/24);

//小时数

remainHours = parseInt(remainTime/1000/60/60%24);

//分钟

remainMinutes = parseInt(remainTime/1000/60%60);

//秒

remainSeconds = parseInt(remainTime/1000%60);


time.innerHTML = remainDay + "天"+remainHours+"小时"+remainMinutes+"分钟"+remainSeconds+"秒";

}

setInterval(clock,1000);


27.alert怎样换行

答:转义字符,换行符\n

alert("大家好\n大家好")


28.左侧内容可上下滚动,右侧是滚动条,如何实现布局

答:固定高度,overflow-y:scroll


29.向上滚动动画如何实现

document.body.scrollTop = "xxx";

document.documentElement.scrollTop = "xxx";


30.form表单提交

答:默认提交,form.onsubmit = function(){}可在表单数据提交之前验证


31.javaScript与ECMAScript的区别?

答:javascript是具体实现,ECMAScript是标准,大纲


32.==与===的区别?

==等于,判断值是否相等,会有类型转换

===全等,判断类型跟值是否相等,类型不会转换


33.什么是DOM?

答:文档对象模型


34.Undefined与null的区别?

答:Undefined无定义,null空


35.有两个对象,var o = {num:1};var p = {num:2};要求书写一段代码,使得o+p===3为true。

Object.prototype.toString = function(){

return this.num;

}


36.如果给你这么一个页面:顶部有logo什么的,下来是导航条,中上部有图片切换,右边是登录注册,左边有简单的信息展示,中下部是一些新闻,底部是一般的那些联系我们呀什么的传统页尾。这样一个布局加上所有的js效果和新闻链接包括所有的兼容,你大概能多久完成(新鸿儒);


37.讲解一下this (作用域)

this的指向:普通函数内的this指向全局变量

构造函数内部this指向新创建出来的对象

对象方法内的this指向的是调用该方法的对象

call,apply,bind可以改变this的指向


38.构造函数

答:new关键字后紧接的函数即为构造函数,约定首字母大写


39.原型,原型链的理解

答:ECMA5之前没有类的概念,js的继承是基于原型链的


40.说说前端优化从哪方面着手,具体说明有哪些?

html 语义化,符合标准,减少嵌套层数,加快浏览器DOM解析速度

css 合并,压缩少写冗余css代码,使用精灵图...

js 减少DOM操作,使用变量缓存数据,少用全局变量,做动画的元素都绝对定位...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,375评论 1 45
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,706评论 2 17
  • /* provider可以封装(value factory service constant除外),pr...
    lwz4070阅读 1,597评论 0 0
  • 昨天看完了杨绛先生写的《我们仨》,看完是毫无征兆的看完,只到了看到最后一个字,才发现是看完了,全书文字朴实情切,...
    孔叁三阅读 240评论 0 0
  • “千载一揆”。 王阳明说,人人皆可为圣人,你怎么修行做圣人呢?也很简单,圣道无非是日用常行,应事接物待人,当你做每...
    华杉2009阅读 923评论 0 2