JavaScript初级面试题

更新时间:2023-05-29 16:25:12 阅读: 评论:0

JavaScript初级⾯试题
豆腐盒
前⾯⼏题是会很基础,越下越有深度。
初级Javascript:
1.是⼀门什么样的语⾔,它有哪些特点?
没有标准答案。
2.JavaScript的数据类型都有什么?
基本数据类型:String,boolean,Number,Undefined, Null
引⽤数据类型:Object(Array,Date,RegExp,Function)
那么问题来了,如何判断某变量是否为数组数据类型?
⽅法⼀.判断其是否具有“数组性质”,如slice()⽅法。可⾃⼰给该变量定义slice⽅法,故有时会失效
⽅法⼆.obj instanceof Array 在某些IE版本中不正确
⽅法三.⽅法⼀⼆皆有漏洞,在ECMA Script5中定义了新⽅法Array.isArray(), 保证其兼容性,最好的⽅法如下:JavaScript
1 2 3 4 5 6if(typeof Array.isArray==="undefined")
{
Array.isArray = function(arg){
return String.call(arg)==="[object Array]"    };
}
3.已知ID的Input输⼊框,希望获取这个输⼊框的输⼊值,怎么做?(不使⽤第三⽅框架)
JavaScript
4.希望获取到页⾯中所有的checkbox怎么做?(不使⽤第三⽅框架)
JavaScript
1 2 3 4 5 6var domList = ElementsByTagName(‘input’) var checkBoxList = [];
var len = domList.length;  //缓存到局部变量
while (len--) {  //使⽤while的效率会⽐for循环更⾼
  if (domList[len].type == ‘checkbox’) {
  checkBoxList.push(domList[len]);
5.设置⼀个已知ID的DIV的html内容为xxxx,字体颜⾊设置为⿊⾊(不使⽤第三⽅框架) JavaScript
1 2 ElementById(“ID”); dom.innerHTML=“xxxx”
lor=“#000”
6.当⼀个DOM节点被点击时候,我们希望能够执⾏⼀个函数,应该怎么做?
直接在DOM⾥绑定事件:<div onclick=”test()”></div>
在JS⾥通过onclick绑定:lick = test
通过事件添加进⾏绑定:addEventListener(xxx, ‘click’, test)
那么问题来了,Javascript的事件流模型都有什么?
“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,⼀直到最具体的
“DOM事件流”:三个阶段:事件捕捉,⽬标阶段,事件冒泡
7.什么是Ajax和JSON,它们的优缺点。
Ajax是异步JavaScript和XML,⽤于在Web页⾯中实现异步数据交互。
优点:
 可以使得页⾯不重载全部内容的情况下加载局部内容,降低数据传输量
 避免⽤户不断刷新或者跳转页⾯,提⾼⽤户体验
缺点:
 对搜索引擎不友好(
 要实现ajax下的前后退功能成本较⼤
 可能造成请求数的增加
 跨域问题限制疯狂大请客
JSON是⼀种轻量级的数据交换格式,ECMA的⼀个⼦集
考研英语一和英语二的区别优点:轻量级、易于⼈的阅读和编写,便于机器(JavaScript)解析,⽀持复合数据类型(数组、对象、字符串、数字) 8.看下列代码输出为何?解释原因。
JavaScript
1 2 3var a;
alert(typeof a); // undefined alert(b); // 报错
解释:Undefined是⼀个只有⼀个值的数据类型,这个值就是“undefined”,在使⽤var声明变量但并未对其赋值进⾏初始化时,这个变量的值就是undefined。⽽b由于未声明将报错。注意未申明的变量和
声明了未赋值的是不⼀样的。
9.看下列代码,输出什么?解释原因。
2alert(typeofa);//object
9月28日是什么星座解释:null是⼀个只有⼀个值的数据类型,这个值就是null。表⽰⼀个空指针对象,所以⽤typeof检测会返回”object”。
10.看下列代码,输出什么?解释原因。
韵母表24个JavaScript
1 2 3 4 5 6 7 8 9var undefined;
undefined == null; // true
1 == true;  // true
2 == true;  // fal
0 == fal;  // true
0 == '';    // true
NaN == NaN;  // fal
[] == fal; // true
[] == ![];  // true
undefined与null相等,但不恒等(===)
⼀个是number⼀个是string时,会尝试将string转换为number
尝试将boolean转换为number,0或1
尝试将Object转换成number或string,取决于另外⼀个对⽐量的类型
所以,对于0、空字符串的判断,建议使⽤ “===” 。“===”会先判断两边的值类型,类型不匹配时为fal。
那么问题来了,看下⾯的代码,输出什么,foo的值为什么?JavaScript
1 2 3varfoo="11"+2-"1"; console.log(foo); console.log(typeoffoo);
执⾏完后foo的值为111,foo的类型为String。
11.看代码给答案。
JavaScript
1 2 3 4 5var a = new Object();
a.value = 1;learn的近义词
b = a;
b.value = 2;
alert(a.value);
答案:2(考察引⽤数据类型细节)
12.已知数组var stringArray = [“This”, “is”, “Baidu”, “Campus”],Alert出”This is Baidu Campus”。答案:alert(stringArray.join(“”))
JavaScript
1 2 3 4 5 6 7 8functioncombo(msg){
vararr=msg.split("-");
for(vari=1;i<arr.length;i++){
arr[i]=arr[i].charAt(0).toUpperCa()+arr[i].substr(1,arr[i].length-1);    }
msg=arr.join("");
returnmsg;
}
(考察基础API)
13.var numberArray = [3,6,2,4,1,5]; (考察基础API)
1) 实现对该数组的倒排,输出[5,1,4,2,6,3]
2) 实现对该数组的降序排列,输出[6,5,4,3,2,1] JavaScript
1 2 3 4 5 6 7 8function combo(msg){
var arr=msg.split("-");
for(var i=1;i<arr.length;i++){
arr[i]=arr[i].charAt(0).toUpperCa()+arr[i].substr(1,arr[i].length-1);    }
msg=arr.join("");
return msg;
}
14.输出今天的⽇期,以YYYY-MM-DD的⽅式,⽐如今天是2014年9⽉26⽇,则输出2014-09-26 JavaScript
1 2 3 4 5 6 7 8 9 10 11vard=newDate();
// 获取年,getFullYear()返回4位的数字FullYear();
// 获取⽉,⽉份⽐较特殊,0是1⽉,11是12⽉Month()+1;
// 变成两位
month=month<10?'0'+month:month;
// 获取⽇
Date();
day=day<10?'0'+day:day;
alert(year+'-'+month+'-'+day);
15.将字符串”<tr><td>{$id}</td><td>{$name}</td></tr>”中的{$id}替换成10,{$name}替换成Tony (使⽤正则表达式)
答案:”<tr><td>{$id}</td><td>{$id}_{$name}</td></tr>”.replace(/{\$id}/g, ’10’).replace(/{\$name}/g, ‘Tony’);
16.为了保证页⾯输出安全,我们经常需要对⼀些特殊的字符进⾏转义,请写⼀个函数escapeHtml,将<, >, &, “进⾏转义
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14function escapeHtml(str) {
place(/[<>”&]/g, function(match) {    switch (match) {
ca “<”:
return “<”;
ca “>”:
return “>”;
ca “&”:
return “&”;
ca “\””:
善良的女人return “"”;
}
});
}
17.foo = foo||bar ,这⾏代码是什么意思?为什么要这样写?
答案:if(!foo) foo = bar; //如果foo存在,值不变,否则把bar的值赋给foo。
短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进⾏求值时,只要最终的结果已经可以确定是真或假,求值过程便告终⽌,这称之为短路求值。
18.看下列代码,将会输出什么?(变量声明提升)
JavaScript
1 2 3 4 5 6varfoo=1; function(){
console.log(foo);    varfoo=2;
console.log(foo); }
答案:输出undefined 和 2。上⾯代码相当于:JavaScript
1 2 3 4 5 6 7var foo = 1;
function(){
var foo;
console.log(foo); //undefined    foo = 2;
欲上青天console.log(foo); // 2;
}
函数声明与变量声明会被JavaScript引擎隐式地提升到当前作⽤域的顶部,但是只提升名称不会提升赋值部分。
19.⽤js实现随机选取10–100之间的10个数字,存⼊⼀个数组,并排序。

本文发布于:2023-05-29 16:25:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/947470.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数组   输出   事件   变量   数据类型   代码   提升
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图