前端面试题总结(js部分)|上

二、JS 基础
1、javascript 的typeof 返回哪些数据类型
2、例举 3 种强制类型转换和 2 种隐式类型转换?
3、split() join() 的区别
4、数组方法 pop() push() unshift() shift()
5、事件绑定和普通事件有什么区别
6、IE 和DOM 事件流的区别
7、IE 和标准下有哪些兼容性的写法
8、call 和 apply 的区别
9、b 继承 a 的方法
10、JavaScript this 指针、闭包、作用域
11、事件委托是什么
12、闭包是什么,有什么特性,对页面有什么影响
13、如何阻止事件冒泡和默认事件
14、添加 删除 替换 插入到某个接点的方法
15、javascript 的本地对象,内置对象和宿主对象
16、document load 和 document ready 的区别
17、”==”“===”的不同
18、javascript 的同源策略
19、编写一个数组去重的方法
20、JavaScript 是一门什么样的语言,它有哪些特点?
21、JavaScript 的数据类型都有什么?
22、已知 ID 的 Input 输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方
框架)2
23、希望获取到页面中所有的 checkbox 怎么做?(不使用第三方框架)
24、设置一个已知 ID 的 DIV 的 html 内容为 xxxx,字体颜色设置为黑色(不使用第三方
框架)
25、当一个 DOM 节点被点击时候,我们希望能够执行一个函数,应该怎么做?
26、看下列代码输出为何?解释原因
27、看下列代码,输出什么?解释原因。
28、看下列代码,输出什么?解释原因。
29、看代码给答案。
30、已知数组 var stringArray = [“This”, “is”, “Baidu”, “Campus”],
Alert 出”This is Baidu Campus”。
31、var numberArray = [3,6,2,4,1,5];(考察基础 API)
32、输出今天的日期,以 YYYY-MM-DD 的方式,比如今天是 2014 年 9 月 26 日,则输出
2014-09-26
33、将字符串”{KaTeX parse error: Expected 'EOF', got '}' at position 3: id}̲{name}”中的{KaTeX parse error: Expected 'EOF', got '}' at position 3: id}̲替换成 10, {name}替换成 Tony (使用正则表达式)
34、为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数
escapeHtml,将<, >, &, “进行转义
35、foo= foo||bar ,这行代码是什么意思?为什么要这样写
36、看下列代码,将会输出什么?(变量声明提升)
37、用 js 实现随机选取 10–100 之间的 10 个数字,存入一个数组,并排序。
38、把两个数组合并,并删除第二个元素。
39、怎样添加、移除、移动、复制、创建和查找节点(原生 JS,实在基础,没细写每
一步)
40、有这样一个 URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写
一段 JS 程序提取 URL 中的各个 GET 参数(参数名和参数个数不确定),将其按 key-value
形 式 返 回 到 一 个 json 结 构 中 , 如 {a: ’ 1 ′ , b: ’ 2 ′ , c: ” , d: ’
xxx’, e:undefined}。
41、正则表达式构造函数 var reg=new RegExp(“xxx”)与正则表达字面量 varreg=//
有什么不同?匹配邮箱的正则表达式?
42、写一个 function,清除字符串前后的空格。(兼容所有浏览器)
43、Javascript 中 callee 和 caller 的作用?
44、Javascript 中, 以下哪条语句一定会产生运行错误? 答案( B )
45、以下两个变量 a 和 b,a+b 的哪个结果是 NaN? 答案( C )
46、vara=10; b=20;c=4; ++b+c+a++以下哪个结果是正确的?答案( B )
47、下面的JavaScript 语句中,( D )实现检索当前页面中的表单元素中的所有文本
框,并将它们全部清空=
48、要将页面的状态栏中显示“已经选中该文本框”,下列 JavaScript 语句正确的是
( A )
49、以下哪条语句会产生运行错误:(A)A.var obj = ();
.var obj = [];
Cvar obj = {};
D.ar obj = //;
50、以下哪个单词不属于 javascript 保留字:(B)
A.with
B.parent
Cclass
D.oid
51、请选择结果为真的表达式:(C)
A.nullinstanceof Object
B.null === undefined
Cnull == undefined
D.aN ==NaN

52、Javascript 中, 如果已知 HTML页面中的某标签对象的 id=”username”,用
document.getElementById(‘username’) 方法获得该标签对象。…62
53 、 typeof 运 算 符 返 回 值 中 有 一 个 跟 javascript 数 据 类 型 不 一 致 , 它 是
”function”

54、定义了一个变量,但没有为该变量赋值,如果 alert 该变量,javascript 弹出的
对话框中显示___undefined
_____ 。
55、分析代码,得出正确的结果。
56、写出函数 DateDemo 的返回结果,系统时间假定为今天
57、写出程序运行的结果?
58、阅读以下代码,请分析出结果:
59、补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗口; 64
60、写出简单描述 html 标签(不带属性的开始标签和结束标签)的正则表达式,并将
以下字符串中的 html 标签去除掉
61、完成 foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。65
62、完成函数 showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示66
63、截取字符串 abcdefg 的 efg
64、列举浏览器对象模型 BOM 里常用的至少 4 个对象,并列举 window 对象的常用方法
至少 5 个
65、简述列举文档对象模型 DOM 里 document 的常用的查找访问节点的方法并做简单说

66、希望获取到页面中所有的 checkbox 怎么做?(不使用第三方框架)
67、JavaScript 的数据类型都有什么?
68、javascript 中有哪几种数据类型,分别写出中文和英文
69、javascript 中==和===的区别是什么?举例说明。
70、简述创建函数的几种方式
71、Javascript 如何实现继承?
72、Javascript 创建对象的几种方式?
73、把 Script 标签 放在页面的最底部的 body 封闭之前 和封闭之后有什么区别?浏
览器会如何解析它们?
74、iframe 的优缺点
75、请你谈谈 Cookie 的弊端?.
76、DOM 操作——怎样添加、移除、移动、复制、创建和查找节点。
77、js 延迟加载的方式有哪些?
78、documen.write 和 innerHTML 的区别?
79、哪些操作会造成内存泄漏?
80、javascript 的 typeof 返回哪些数据类型?
81、split()join() 的区别
82、数组方法 pop() push() unshift() shift()各表示什么意思?
83、判断一个字符串中出现次数最多的字符,统计这个次数
84、javascript 的 typeof 返回哪些数据类型
85、例举 3 种强制类型转换和 2种隐式类型转换?
86、split()join() 的区别
87、数组方法 pop() push() unshift() shift()
88、事件绑定和普通事件有什么区别… 错误!未定义书签。
89、IE 和 DOM 事件流的区别
90、IE 和标准下有哪些兼容性的写法
91、call 和 apply 的区别
92、b 继承 a 的方法… 错误!未定义书签。
93、写一个获取非行间样式的函数
94、事件委托是什么… 错误!未定义书签。
95、闭包是什么,有什么特性,对页面有什么影响
96、解释 jsonp 的原理,以及为什么不是真正的 ajax
97、javascript 的本地对象,内置对象和宿主对象
98、document load 和 document ready 的区别
99、字符串反转,如将 '12345678’变成 ‘87654321’
100、将数字12345678 转化成RMB 形式 如: 12,345,678
101、生成 5 个不同的随机数;
102、去掉数组中重复的数字 方法一;
103、阶乘函数;
104、window.location.search() 返回的是什么?
105、window.location.hash 返回的是什么?
106、window.location.reload() 作用?
107、阻止冒泡函数
108、什么是闭包? 写一个简单的闭包?;
109、javascript中的垃圾回收机制?
110、看题做答:
111、下面输出多少?
112、再来一个
115、JS 的继承性
116、精度问题: JS 精度不能精确到 0.1 所以 。。。。同时存在于值和差值中
117、加减运算
118、什么是同源策略?
119、call 和applay 的区别是什么?
120、为什么不能定义 1px 左右的 div 容器?
121、结果是什么?
122、输出结果
123、计算字符串字节数:
124、结果是:
125、声明对象,添加属性,输出属性
126、匹配输入的字符:第一个必须是字母或下划线开头,长度 5-20
127、检测变量类型
128、如何在 HTML中添加事件,几种方法?
129、BOM 对象有哪些,列举 window 对象?
130、请问代码实现 outerHTML
131、JS 中的简单继承 call 方法!
132、bind(), live(), delegate()的区别
133、typeof的返回类型有哪些?
134、简述 link 和 import 的区别?
135、window.onload 和 document.ready 的区别?
136、 解析 URL 成一个对象?
137、看下列代码输出什么?
138、看下列代码,输出什么?
139、已知数组 var stringArray = ["This”, "is”, "Baidu”, “Campus”],Alert
出”This isBaidu Campus”。
140、已知有字符串 foo=“get-element-by-id”,写一个 function 将其转化成驼峰表示
法"getElementById”。
141、怎样添加、移除、移动、复制、创建和查找节点
142、原生 JS 的 window.onload 与 Jquery 的$(document).ready(function(){})有什么
不同
143、你如何优化自己的代码
144、请描述出下列代码运行的结果
145、需要将变量 e 的值修改为“a+b+c+d”,请写出对应的代码
146、怎样实现两栏等高?
147、使用 js 实现这样的效果:在文本域里输入文字时,当按下 enter 键时不换行,而
是替换成“{{enter}}”,(只需要考虑在行尾按下 enter 键的情况)
148、以下代码中 end 字符串什么时候输出.
149、specify(‘hello,world’)//=>’h,e,l,l,o,w,o,r,l,d’实现 specify函数
150、请将一个 URL 的 search 部分参数与值转换成一个 json 对象
151、请用原生 js实现 jquery 的 get\post 功能,以及跨域情况下
152、请简要描述 web 前端性能需要考虑哪方面,你的优化思路是什么?
153、简述 readyonly 与 disabled 的区别
154、判断一个字符吕串出现次数最多的字符,统计这个次数并输出
155、编写一个方法,去掉一个数组的复重元素
156、写出 3 个使用 this 的典型应用
157、请尽可能详尽的解释 ajax的工作原理
158、为什么扩展 javascript 内置对象不是好的做法?
159、请解释一下 javascript 的同源策略
160、什么是三元表达式?“三元”表示什么意思?
161、浏览器标准模式和怪异模式之间的区别是什么?
162、如果设计中使用了非标准的字体,你该如何去实现?
163、用 css 分别实现某个 div 元素上下居中和左右居中
164、modulo(12,5)//2 实现满足这个结果的 modulo 函数
165、HTTP 协议中,GET 和 POST有什么区别?分别适用什么场景 ?
166、HTTP 状态消息 200 302 304 403 404 500 分别表示什么
167 、 HTTP 协 议 中 , header 信 息 里 面 , 怎 么 控 制 页 面 失 效 时 间
(last-modified,cache-control,Expires 分别代表什么)
168、HTTP 雷锋议目前常用的有哪几个?KEEPALIVE 从哪个版本开始出现的?
169、业界常用的优化 WEB 页面加载速度的方法(可以分别从页面元素展现,请求连接,
css,js,服务器等方面介绍)
170、列举常用的 web 页面开发,调试以及优化工具
171、解释什么是 sql 注入,xss 漏洞
172、如何判断一个 js变量是数组类型
173、请列举 js 数组类型中的常用方法
174、FF 与 IE中如何阻止事件冒泡,如何获取事件对象,以及如何获取触发事件的元

175、列举常用的 js 框架以及分别适用的领域
176、js 中如何实现一个 map
177、js 可否实现面向对象编程,如果可以如何实现 js 对象的继承
178、约瑟夫环—已知 n 个人(以编号 1,2,3…分别表示)围坐在一张圆桌周围。从
编号为 k的人开始报数,数到 m 的那个人出列;他的下一个人又从 1 开始报数,数到 m
的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
179、有 1 到 10w 这个 10w 个数,去除 2 个并打乱次序,如何找出那两个数?
180、如何获取对象 a 拥有的所有属性(可枚举的、不可枚举的,不包括继承来的属性)

181、有下面这样一段 HTML结构,使用 css 实现这样的效果:
182、下面这段代码想要循环昝输出结果 01234,请问输出结果是否正确,如果不正确,
请说明为什么,并修改循环内的代码使其输出正确结果
183、解释下这个 css 选择器什么发生什么?
184、JavaScript 以下哪条语句会产生运行错误
185、以下哪些是 javascript 的全局函数:(ABC
186、关于 IE的 window 对象表述正确的有:(ACD)
187、描述错误的是
188、关于 link 和@import 的区别正确的是 A
189、下面正确的是 A
188、错误的是
189、不用任何插件,如何实现一个 tab 栏切换?
190、基本数据类型的专业术语以及单词拼写
191、变量的命名规范以及命名推荐
192、三种弹窗的单词以及三种弹窗的功能
193、console.log( 8| 1); 输出值是多少?
194、只允许使用 + - * / 和 Math.,求一个函数y = f(x, a, b);当 x > 100 时
返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,
数组
195、JavaScriptalert(0.4
0.2);结果是多少?和你预期的一样吗?如果不一样该如何
处理?
196、一个 div,有几种方式得到这个 div 的 jQuery 对象?

想直接获取这个 div 的 dom 对象,如何获取?dom 对象如何转
化为 jQuery 对象?
197、主流浏览器内核
198、如何显示/隐藏一个 dom 元素?请用原生的 JavaScript 方法实现
199、JavaScript 有哪几种数据类型
200、jQuery 框架中 KaTeX parse error: Expected '}', got 'EOF' at end of input: …、将字符串”{id}{ KaTeX parse error: Expected 'EOF', got '}' at position 5: name}̲”中的{id}替换成 10,
{ KaTeX parse error: Expected 'EOF', got '}' at position 5: name}̲替换成 Tony (使用正则表…/;
251、数组和字符串
252、下列控制台都输出什么

二、JS 基础
1 、javascript 的 的 f typeof 返回哪些数据类型
object number function boolean underfind string
typeof null;//object
typeof isNaN;//
typeof isNaN(123)
typeof [];//object
Array.isARRAY(); es5
toString.call([]);//”[object Array]”
var arr=[];
arr.constructor;//Array
2 、例举 3 3 种强制类型转换和 2 2 种隐式类型转换? ?
强制(parseInt,parseFloat,Number())
隐式(==
1==”1”//true
null==undefined//true
3 、 split() join() 的区别
前者是切割成数组的形式,
后者是将数组转换成字符串
4 、数组方法 pop() push() unshift() shift()
Push()尾部添加 pop()尾部删除
Unshift()头部添加 shift()头部删除
5 、事件绑定和普通事件有什么区别
传统事件绑定和符合 W3C标准的事件绑定有什么区别?
div1.οnclick=function(){};

1、如果说给同一个元素绑定了两次或者多次相同类型的事件,那么后面的绑定会覆盖前面
的绑定
2、不支持 DOM事件流 事件捕获阶段目标元素阶段=>事件冒泡阶段
addEventListener
1、如果说给同一个元素绑定了两次或者多次相同类型的事件,所有的绑定将会依次触发
2、支持 DOM 事件流的
3、进行事件绑定传参不需要 on 前缀
addEventListener(“click”,function(){},true);//此时的事件就是在事件冒泡阶段执行
ie9 开始,ie11 edge:addEventListener
ie9 以前:attachEvent/detachEvent
1、进行事件类型传参需要带上 on 前缀
2、这种方式只支持事件冒泡,不支持事件捕获
事件绑定是指把事件注册到具体的元素之上,普通事件指的是可以用来注册的事件
6 、IE 和 和 DOM 事件流的区别
1.执行顺序不一样、
2.参数不一样
3.事件加不加 on
4.this 指向问题
9 IE9 以前:attachEvent(“onclick”)、detachEvent(“onclick”)
9 IE9 开始跟 DOM 事件流是一样的,都是 addEventListener
7 、E IE 和标准下有哪些兼容性的写法
var ev = ev || window.event
document.documentElement.clientWidth ||document.body.clientWidth
vartarget = ev.srcElement||ev.target
8 、call 和 和 apply 的区别
call 和 apply 相同点:
都是为了用一个本不属于一个对象的方法,让这个对象去执行
toString.call([],1,2,3)
toString.apply([],[1,2,3])
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
9 、b 继承 a 的方法
考点:继承的多种方式
function b(){}
b.protoototype=new a;
10 、JavaScript this 指针、闭包、作用域
this:指向调用上下文
闭包:内层作用域可以访问外层作用域的变量
作用域:定义一个函数就开辟了一个局部作用域,整个 js 执行环境有一个全局作用域
11 、事件委托是什么
符合 W3C 标准的事件绑定 addEventLisntener /attachEvent
让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
12 、闭包是什么,有什么特性,对页面有什么影响
闭包就是能够读取其他函数内部变量的函数。
闭包的缺点:滥用闭包函数会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都
永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数
13 、如何阻止事件冒泡和默认事件
e. stopPropagation();//标准浏览器
event.canceBubble=true;//ie9 之前
阻止默认事件:
为了不让 a 点击之后跳转,我们就要给他的点击事件进行阻止
r eturn false
e.preventDefault();
14加 、添加 除 删除 换 替换 插入到某个接点的方法
obj.appendChild()
obj.insertBefore() //原生的 js 中不提供 insertAfter();
obj.replaceChild()//替换
obj.removeChild()//删除
15 、t javascript 的本地对象,内置对象和宿主对象
本地对象为 array obj regexp 等可以 new 实例化
内置对象为 gload Math 等不可以实例化的
宿主为浏览器自带的 document,window 等
16 、t document d load 和 和 t document y ready 的区别
Document.onload 是在结构和样式加载完才执行 js
window.onload:不仅仅要在结构和样式加载完,还要执行完所有的样式、图片这些资源文
件,全部加载完才会触发 window.onload 事件
Document.ready 原生中没有这个方法,jquery 中有 $().ready(function)
17 、”==” 和“===” 的不同
前者会自动转换类型
后者不会
1==”1”
null==undefined
===先判断左右两边的数据类型,如果数据类型不一致,直接返回 false
之后才会进行两边值的判断
18 、t javascript 的同源策略
一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协
议和端口号的组合
http,ftp:协议
主机名;localhost
端口名:8
同源策略带来的麻烦:ajax 在不 0:http 协议的默认端口
https:默认端口是 8083
同域名下的请求无法实现,
如果说想要请求其他来源的 js 文件,或者 json 数据,那么可以通过 jsonp 来解决
19 、编写一个数组去重的方法
var arr=[1,1,3,4,2,4,7];
=>[1,3,4,2,7]
一个比较简单的实现就是:
1、先创建一个空数组,用来保存最终的结果
2、循环原数组中的每个元素
3、再对每个元素进行二次循环,判断是否有与之相同的元素,如果没有,将把这个元素放
到新数组中
4、返回这个新数组
function oSort(arr){
varresult ={};
varnewArr=[];
for(vari=0;i if(!result[arr]) {
newArr.push(arr)
result[arr]=1
}
}
return newArr
} 20 、t JavaScript 是一门什么样的语言,它有哪些特点?
没有标准答案。
运行环境:浏览器中的 JS 引擎(v8.。。)
语言特性:面向对象,动态语言:
//动态语言的特性
varnum=10;//num 是一个数字类型
num=“jim”;//此时 num 又变成一个字符串类型
//我们把一个变量用来保存不同数据类型的语言称之为一个动
态语言
//静态语言:c#javacc++
//静态语言在声明一个变量就已经确定了这个变量的数据类
型,
// 而且在任何时候都不可以改变他的数据类型
21 、JavaScript 的数据类型都有什么?
基本数据类型:String,Boolean,number,undefined,object,Null
引用数据类型:Object(Array,Date,RegExp,Function)
那么问题来了,如何判断某变量是否为数组数据类型?
方法一.判断其是否具有“数组性质”,如 slice()方法。可自己给该变量定义 slice 方法,
故有时会失效
方法二.obj instanceof Array在某些 IE 版本中不正确
方法三.方法一二皆有漏洞,在 ECMA Script5 中定义了新方法 Array.isArray(), 保证其兼
容性,最好的方法如下:
toString.call(18);//”[object Number]”
toString.call(“”);//”[objectString]”
解析这种简单的数据类型直接通过 typeof 就可以直接判断
toString.call 常用于判断数组、正则这些复杂类型
toString.call(/[0-9]{10}/)//”[object RegExp]”
if(typeof Array.isArray==="undefined"){
Array.isArray =function(arg){
return Object.prototype.toString.call(arg)==="[object Array]"
};
}
22 、已知 D ID 的 的 t Input 输入框,希望获取这个输入框的输入值,怎么做?( ( 不使
用第三方框架) )
document.getElementById(“ID”).value
23 、希望获取到页面中所有的 x checkbox 怎么做?( ( 不使用第三方框架) )
vardomList= document.getElementsByTagName(‘input’)
varcheckBoxList = [];//返回的所有的 checkbox
varlen= domList.length; //缓存到局部变量
while (len–) { //使用 while 的效率会比 for 循环更高
if (domList[len].type == ‘checkbox’) {
checkBoxList.push(domList[len]);
}
}
24 、 设置一个已知 D ID 的 的 V DIV 的 的 l html 内容为 xxxx , 字体颜色设置为黑色( ( 不使用
第三方框架) )
vardom= document.getElementById(“ID”);
dom.innerHTML =“xxxx”
dom.style.color= “#000”
25 、当一个 M DOM 节点被点击时候,我们希望能够执行一个函数,应该怎么做?
直接在 DOM 里绑定事件:


在 JS 里通过 onclick 绑定:xxx.onclick = test
通过事件添加进行绑定:addEventListener(xxx, ‘click’, test)
那么问题来了,Javascript 的事件流模型都有什么?
“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的
“DOM 事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡
26 、看下列代码输出为何?解释原因。
vara;
alert(typeof a); //“undefined”
//alert(b);// 报错
b=10;
alert(typeof b);//”number”
解释:Undefined 是一个只有一个值的数据类型,这个值就是“undefined”,在使用 var
声明变量但并未对其赋值进行初始化时,这个变量的值就是 undefined。而 b 由于未声明将
报错。注意未申明的变量和声明了未赋值的是不一样的。
d undefined 会在以下三种情况下产生:
1、一个变量定义了却没有被赋值
2、想要获取一个对象上不存在的属性或者方法:
3、一个数组中没有被赋值的元素
注意区分 undefined 跟 not defnied(语法错误)是不一样的
27 、看下列代码, , 输出什么?解释原因。
vara =null;
alert(typeof a); //object
解释:null 是一个只有一个值的数据类型,这个值就是 null。表示一个空指针对象,所以
用 typeof 检测会返回”object”。
28 、看下列代码, , 输出什么?解释原因。
varundefined;//此时 undefined 这个变量的值是 undefined
undefined === null; // true
1 ==true; // true
此时会把布尔类型的值转换为数字类型 true=1 false=0
2 == true; // false
0 ==false; // true
0 = == ‘’; // true
NaN = == NaN; // false
[] == false; //true
[] == ![]; // true
 undefined 与null 相等,但不恒等( ===
一个是 number 一个是 string时,会尝试将 string 转换为 number
尝试将 boolean转换为 number,0或 1
尝试将 Object 转换成 number或 string,取决于另外一个对比量的类型
所以,对于 0、空字符串的判断,建议使用 “ ===” 。“ ===”会先判断两边的值类
型,类型不匹配时为 false。
那么问题来了,看下面的代码,输出什么,foo 的值为什么?
varfoo= “11”+2-“1”;
console.log(foo);//111
console.log(typeof foo);
执行完后 foo的值为 111,foo 的类型为 number。
29 、看代码给答案。
vara =newObject();
a.value= 1;
b =a; {value:1}
b.value= 2;
alert(a.value);//2
答案:2(考察引用数据类型细节)
30 、 已 知 数 组
var stringArray = = [ [ “ This ”, , “ is ”, , “ Baidu ”, , “ Campus ”] ] , Alert t
出 ” This is Baidu Campus ” 。
答案:alert(stringArray.join(“”))
已知有字符串 foo=”get-element-by-id”,写一个 function 将其转化成驼峰表示法”
getElementById”。
//
function combo(msg){
vararr=msg.split("-");//[get,element,by,id]
for(vari=1;i arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length
-1);//Element
}
msg=arr.join("");//msg=” getElementById”
return msg;
}
(考察基础 API)
31 、 var numberArray = = ; [3,6,2,4,1,5]; (考察基础 API )

  1. 实现对该数组的倒排,输出[5,1,4,2,6,3]
  2. 实现对该数组的降序排列,输出[6,5,4,3,2,1]
    function combo(msg){
    vararr=msg.split("-");
    for(vari=1;i arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length
    -1);
    }
    msg=arr.join("");
    return msg;
    }
    32 、输出今天的日期,以 D YYYY-MM-DD 的方式,比如今天是 4 2014 年 年 9 9 月 月 6 26 日 ,
    则输出 2014-09-26
    var d = new Date();
    //获取年,getFullYear()返回 4 位的数字
    var year =d.getFullYear();
    //获取月, 月份比较特殊,0 0 是 是 1 1 月,1 11 是 是 2 12 月
    var month = d.getMonth() +1;
    //变成两位
    month = month < 10? ‘0’ +month :month;
    //获取日
    var day = d.getDate();
    day = day < 10? ‘0’ +day: day;
    alert(year+ ‘-’ +month +’-’+ day);
    33 、将字符串 ” {KaTeX parse error: Expected 'EOF', got '}' at position 3: id}̲{name} ” 中的 {KaTeX parse error: Expected 'EOF', got '}' at position 3: id}̲ 替换 成 成 10 , {name} 替换成 y Tony (使用正则表达式)
    答案:”{KaTeX parse error: Expected 'EOF', got '}' at position 3: id}̲{id}_{$name}”.replace(/{$id}/g, ’
    10′).replace(/{$name}/g, ‘Tony’);
    34 、为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写
    一个函数 escapeHtml ,将 <, >, &, “ 进行转义
    function escapeHtml(str) {
    //[<>”&]:中括号中字符只要其中的一个出现就代表满足条件
    //给 replace 第二个参数传递一个回调函数,回调函数中参数就是匹配结果,如果匹配不到就
    是 null
    returnstr.replace(/[<>”&]/g,function(match){
    switch(match){
    case “<”:
    return “<”;
    case “>”:
    return “>”;
    case “&”:
    return “&”;
    case “\””:
    return “"”;
    }
    });
    }
    35 、foo = foo||bar ,这行代码是什么意思?为什么要这样写?
    这种写法称之为短路表达式
    答案:if(!foo) foo = bar; //如果 foo存在,值不变,否则把 bar的值赋给 foo。
    短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要
    最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。
    注意 if 条件的真假判定, 记住以下是 e false 的情况:
    空字符串、 false 、 undefined 、 null 、0 0
    36 、看下列代码,将会输出什么 ?( 变量声明提升) )
    varfoo= 1;
    function(){
    console.log(foo);
    varfoo= 2;
    console.log(foo);
    }
    答案:输出 undefined 和 2。上面代码相当于:
    varfoo= 1;
    function(){
    varfoo;
    console.log(foo); //undefined
    foo= 2;
    console.log(foo); // 2;
    }
    函数声明与变量声明会被 JavaScript 引擎隐式地提升到当前作用域的顶部,但是只提升名
    称不会提升赋值部分。
    37 、用 s js 实现随机选取 10 –0 100 之间的 0 10 个数字,存入一个数组,并排序。
    variArray = [];
    funtiongetRandom(istart, iend){
    variChoice= istart - iend+1;
    return Math.floor() Math.random() * iChoice + istart;
    }
    Math.random()就是获取 0-1 之间的随机数(永远获取不到 1)
    for(vari=0; i<10; i++){
    varresult=getRandom(10,100);
    iArray.push(result);
    }
    iArray.sort();
    38 、把两个数组合并,并删除第二个元素。
    vararray1 = [‘a’,‘b’,‘c’];
    varbArray = [‘d’,‘e’,‘f’];
    varcArray = array1. concat(bArray);
    cArray.splice(1,1);
    39 、怎样添加、移除、移动、复制、创建和查找节点(原生 JS ,实在基础,没
    细写每一步)
    1)创建新节点
    createDocumentFragment() //创建一个 DOM 片段
    createElement() //创建一个具体的元素
    createTextNode() //创建一个文本节点
    2)添加、移除、替换、插入
    appendChild() //添加
    removeChild() //移除
    replaceChild() //替换
    insertBefore() //插入
    3)查找
    getElementsByTagName() //通过标签名称
    getElementsByName() //通过元素的 Name 属性的值
    getElementById() //通过元素 Id,唯一性

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