JavaScript面试问题汇总

JavaScript面试问题汇总
JavaScript面试问题汇总

初级Javascript:

1.JavaScript是一门什么样的语言,它有哪些特点?

没有标准答案。

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 6 if(typeof Array.isArray==="undefined")

{

Array.isArray = function(arg){

return Object.prototype.toString.call(arg)==="[object Array]" };

}

3.已知ID 的Input 输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)

JavaScript

1 document.getElementById(“ID ”).value

4.希望获取到页面中所有的checkbox 怎么做?(不使用第三方框架)

JavaScript

1 2 3 4 5 6 7 8 var domList = document.getElementsByTagName(‘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 3 var dom = document.getElementById(“ID ”);

dom.innerHTML = “xxxx ”

dom.style.color = “#000”

6.当一个DOM 节点被点击时候,我们希望能够执行一个函数,应该怎么做? 直接在DOM 里绑定事件:

?在JS里通过onclick绑定:xxx.onclick = test

?通过事件添加进行绑定:addEventListener(xxx, ‘click’, test)

那么问题来了,Javascript的事件流模型都有什么?

?“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播

?“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的

?“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡

7.什么是Ajax和JSON,它们的优缺点。

Ajax是异步JavaScript和XML,用于在Web页面中实现异步数据交互。

优点:

?可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量?避免用户不断刷新或者跳转页面,提高用户体验

缺点:

?对搜索引擎不友好(

?要实现ajax下的前后退功能成本较大

?可能造成请求数的增加

?跨域问题限制

JSON是一种轻量级的数据交换格式,ECMA的一个子集

优点:轻量级、易于人的阅读和编写,便于机器(JavaScript)解析,支持复合数据类型(数组、对象、字符串、数字)

8.看下列代码输出为何?解释原因。

JavaScript

1 2 3 var a;

alert(typeof a); // undefined alert(b); // 报错

解释:Undefined是一个只有一个值的数据类型,这个值就是“undefined”,在使用var声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined。而b由于未声明将报错。注意未申明的变量和声明了未赋值的是不一样的。

9.看下列代码,输出什么?解释原因。

JavaScript

1 2 var a = null;

alert(typeof a); //object

解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。

10.看下列代码,输出什么?解释原因。

JavaScript

1 2 3 4 5 6 7 8 9 var undefined; undefined == null; // true

1 == true; // true

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的值为什么?

JavaScript

1 2 3 var foo = "11"+2-"1"; console.log(foo); console.log(typeof foo);

执行完后foo的值为111,foo的类型为String。

11.看代码给答案。

JavaScript

1 2 3 4 5 var a = new Object();

a.value = 1;

b = a;

b.value = 2;

alert(a.value);

答案:2(考察引用数据类型细节)

12.已知数组var stringArray = [“This”, “is”, “Baidu”, “Campus”],Alert出”This is Baidu Campus”。

答案:alert(stringArray.join(“”))

已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”。

JavaScript

1 2 3 4 5 6 7 8 function combo(msg){

var arr=msg.split("-");

for(var i=1;i

arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1); }

msg=arr.join("");

return msg;

}

(考察基础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 8 function combo(msg){

var arr=msg.split("-");

for(var i=1;i

arr[i]=arr[i].charAt(0).toUpperCase()+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

11 var d = new Date();

// 获取年,getFullYear()返回4位的数字

var year = d.getFullYear();

// 获取月,月份比较特殊,0是1月,11是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);

15.将字符串”{$id}{$name}”中的{$id}替换成10,{$name}替换成Tony (使用正则表达式)

答案:”

{$id}{$id}_{$name}”.replace(/{\$id}/g, ’10’).replace(/{\$name}/g, ‘Tony’);

16.为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将<, >, &, “进行转义

JavaScript

1 2 3 4 5 6 7 8 9

10

11

12

13

14 function escapeHtml(str) {

return str.replace(/[<>”&]/g, function(match) { switch (match) {

case “<”:

return “<”;

case “>”:

return “>”;

case “&”:

return “&”;

case “\””:

return “"”;

}

});

}

17.foo = foo||bar ,这行代码是什么意思?为什么要这样写?

答案:if(!foo) foo = bar; //如果foo存在,值不变,否则把bar的值赋给foo。

短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。

18.看下列代码,将会输出什么?(变量声明提升)

JavaScript

1 2 3 4 5 6 var foo = 1; function(){

console.log(foo); var foo = 2;

console.log(foo); }

答案:输出undefined 和2。上面代码相当于:JavaScript

1 2 3 4 5 6 7 var foo = 1;

function(){

var foo;

console.log(foo); //undefined foo = 2;

console.log(foo); // 2;

}

函数声明与变量声明会被JavaScript引擎隐式地提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。

19.用js实现随机选取10–100之间的10个数字,存入一个数组,并排序。

JavaScript

1 2 3 4 5 6 7 8 9 var iArray = [];

funtion getRandom(istart, iend){

var iChoice = istart - iend +1;

return Math.floor(Math.random() * iChoice + istart; }

for(var i=0; i<10; i++){

iArray.push(getRandom(10,100));

}

iArray.sort();

20.把两个数组合并,并删除第二个元素。JavaScript

1 2 3 4 var array1 = ['a','b','c'];

var bArray = ['d','e','f'];

var cArray = array1.concat(bArray); cArray.splice(1,1);

21.怎样添加、移除、移动、复制、创建和查找节点(原生JS,实在基础,没细写每一步)

1)创建新节点

createDocumentFragment() //创建一个DOM片段

createElement() //创建一个具体的元素

createTextNode() //创建一个文本节点

2)添加、移除、替换、插入

appendChild() //添加

removeChild() //移除

replaceChild() //替换

insertBefore() //插入

3)查找

getElementsByTagName() //通过标签名称

getElementsByName() //通过元素的Name属性的值

getElementById() //通过元素Id,唯一性

22.有这样一个URL:

https://www.360docs.net/doc/a59295157.html,/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}。答案:

JavaScript

1 2 3 4 5 6 7 8 9 function serilizeUrl(url) {

var result = {};

url = url.split("?")[1];

var map = url.split("&");

for(var i = 0, len = map.length; i < len; i++) {

result[map[i].split("=")[0]] = map[i].split("=")[1]; }

return result;

}

23.正则表达式构造函数var reg=new RegExp(“xxx”)与正则表达字面量var reg=//有什么不同?匹配邮箱的正则表达式?

答案:当使用RegExp()构造函数的时候,不仅需要转义引号(即\”表示”),并且还需要双反斜杠(即\\表示一个\)。使用正则表达字面量的效率更高。

邮箱的正则匹配:

JavaScript

1 var regMail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;

24.看下面代码,给出输出结果。

JavaScript

1 2 3 4 5 for(var i=1;i<=3;i++){ setTimeout(function(){ console.log(i);

},0);

};

答案:4 4 4。

原因:Javascript事件处理器在线程空闲之前不会运行。追问,如何让上述代码输出1 2 3?

JavaScript

1 2 3 4 5 6 7 8 9 for(var i=1;i<=3;i++){

setTimeout((function(a){ //改成立即执行函数

console.log(a);

})(i),0);

};

1 //输出

2

3

25.写一个function,清除字符串前后的空格。(兼容所有浏览器)使用自带接口trim(),考虑兼容性:

JavaScript

1 2 3 4 5 6 7 8 9 if (!String.prototype.trim) {

String.prototype.trim = function() {

return this.replace(/^\s+/, "").replace(/\s+$/,""); }

}

// test the function

var str = " \t\n test string ".trim();

alert(str == "test string"); // alerts "true"

26.Javascript中callee和caller的作用?答案:

caller是返回一个对函数的引用,该函数调用了当前函数;

callee是返回正在被执行的function函数,也就是所指定的function对象的正文。那么问题来了?如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?(使用callee完成)

JavaScript

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16 var result=[];

function fn(n){ //典型的斐波那契数列

if(n==1){

return 1;

}else if(n==2){

return 1;

}else{

if(result[n]){

return result[n];

}else{

//argument.callee()表示fn()

result[n]=arguments.callee(n-1)+arguments.callee(n-2); return result[n];

}

}

}

中级Javascript:

1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

?考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别是否清楚

?考察点2:是否知道如何判断一个变量是什么类型的

?考察点3:递归算法的设计

JavaScript

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29 // 方法一:

Object.prototype.clone = function(){

var o = this.constructor === Array ? [] : {};

for(var e in this){

o[e] = typeof this[e] === "object" ? this[e].clone() : this[e]; }

return o;

}

//方法二:

/**

* 克隆一个对象

* @param Obj

* @returns

*/

function clone(Obj) {

var buf;

if (Obj instanceof Array) {

buf = []; //创建一个空的数组

var i = Obj.length;

while (i--) {

buf[i] = clone(Obj[i]);

}

return buf;

}else if (Obj instanceof Object){

buf = {}; //创建一个空对象

for (var k in Obj) { //为这个对象添加新的属性

buf[k] = clone(Obj[k]);

}

30

31

32

33

34 return buf;

}else{ //普通变量直接赋值 return Obj;

}

}

2.如何消除一个数组里面重复的元素?JavaScript

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20 var arr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4];

function deRepeat(){

var newArr=[];

var obj={};

var index=0;

var l=arr.length;

for(var i=0;i

if(obj[arr[i]]==undefined)

{

obj[arr[i]]=1;

newArr[index++]=arr[i];

}

else if(obj[arr[i]]==1)

continue;

}

return newArr;

}

var newArr2=deRepeat(arr);

alert(newArr2); //输出1,2,3,4,5,6,9,25

3.小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp)。从这段描述可以得到以下对象:

JavaScript

1 2 3 4 5 6 7 8 function Dog() {

this.wow = function() {

alert(’Wow’);

}

this.yelp = function() { this.wow();

}

}

小芒和小贤一样,原来也是一条可爱的小狗,可是突然有一天疯了(MadDog),一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。请根据描述,按示例的形式用代码来实。(继承,原型,setInterval)

答案:

JavaScript

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15 function MadDog() {

this.yelp = function() {

var self = this;

setInterval(function() {

self.wow();

}, 500);

}

}

MadDog.prototype = new Dog();

//for test

var dog = new Dog();

dog.yelp();

var madDog = new MadDog(); madDog.yelp();

4.下面这个ul,如何点击每一列的时候alert其index?(闭包)XHTML

1 2 3 4 5

  • 这是第一条
  • 这是第二条
  • 这是第三条

答案:JavaScript

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21 // 方法一:

var lis=document.getElementById('2223').getElementsByTagName('li'); for(var i=0;i<3;i++)

{

lis[i].index=i;

lis[i].onclick=function(){

alert(this.index);

};

}

//方法二:

var lis=document.getElementById('2223').getElementsByTagName('li'); for(var i=0;i<3;i++)

{

lis[i].index=i;

lis[i].onclick=(function(a){

return function() {

alert(a);

}

})(i);

}

5.编写一个JavaScript函数,输入指定类型的选择器(仅需支持id,class,tagName三种简单CSS选择器,无需兼容组合选择器)可以返回匹配的DOM节点,需考虑浏览器兼容性和性能。

/*** @param selector {String} 传入的CSS选择器。* @return {Array}*/

答案:

JavaScript

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26 var query = function(selector) {

var reg = /^(#)?(\.)?(\w+)$/img;

var regResult = reg.exec(selector);

var result = [];

//如果是id选择器

if(regResult[1]) {

if(regResult[3]) {

if(typeof document.querySelector === "function") {

result.push(document.querySelector(regResult[3]));

}

else {

result.push(document.getElementById(regResult[3]));

}

}

}

//如果是class选择器

else if(regResult[2]) {

if(regResult[3]) {

if(typeof document.getElementsByClassName === 'function') { var doms = document.getElementsByClassName(regResult[3]); if(doms) {

result = converToArray(doms);

}

}

//如果不支持getElementsByClassName函数

else {

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57 var allDoms = document.getElementsByTagName("*") ;

for(var i = 0, len = allDoms.length; i < len; i++) {

if(allDoms[i].className.search(new RegExp(regResult[2])) > -1) { result.push(allDoms[i]);

}

}

}

}

}

//如果是标签选择器

else if(regResult[3]) {

var doms = document.getElementsByTagName(regResult[3].toLowerCase()); if(doms) {

result = converToArray(doms);

}

}

return result;

}

function converToArray(nodes){

var array = null;

try{

array = Array.prototype.slice.call(nodes,0);//针对非IE浏览器

}catch(ex){

array = new Array();

for( var i = 0 ,len = nodes.length; i < len ; i++ ) {

array.push(nodes[i])

}

}

return array;

}

6.请评价以下代码并给出改进意见。JavaScript

1 2 3 4 5 if(window.addEventListener){

var addListener = function(el,type,listener,useCapture){ el.addEventListener(type,listener,useCapture);

};

}

WEB前端面笔试题总结

1. 如何显示/隐藏一个DOM元素? 更改元素的css style,设为display: none。此外还可以将visibility设为hidden,透明度设为0,或长、宽设为0。 2. 一个定宽网页在浏览器(IE6,IE7,Firefox,IE5)中横向居中对齐的布局, 请写出主要的HTML标签及CSS。 1. 2. 3. 4. 5.居中 6. 11. 12. 13.

居中
14.

15. 3. CSS中margin和padding的区别 margin是外边距,属于元素之外,相邻元素的margin可以融合。 padding是内边距,在元素之内,相邻元素的padding不可融合。 4. JavaScript中如何检测一个变量是一个String类型?请写出函数实现 function(obj) { returntypeof(obj) == ”string”; } 5. 网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态 显示“××年还剩××天××时××分××秒” 这个看我论坛右上角的就知道了… 6. 如何控制网页在网络传输过程中的数据量 题目貌似有问题,应该是减少数据量吧。 最显著的方法是启用GZIP压缩。此外保持好的编码习惯,避免重复和css、 JavaScript代码,多余的HTML标签和属性。 7. 补充代码,是鼠标单击后Button1到Button2的后面

var parent =this.parentNode; parent.removeChild(this); parent.appendChild(this); 8. Linux中,将a、b打包为back.tar,命令是() 不知道=。= 9. Flash、Ajax各自的优缺点,在使用中如何取舍? Flash的缺点是需要客户端安装Flash插件,比较大,且更改了默认的HTML页面行为;但可以方便地实现很多特效及动画,且具有较高权限。 Ajax的缺点是编程较为复杂,需要服务器端的支持,能实现的效果只能是DOM API 提供的,权限很低,较难跨域;但可以显著加快页面的载入速度和用户体验。 此外,二者都不能被搜索引擎索引(Google已支持Flash文本的索引),不利于SEO。 建议:重要和关键部分直接用HTML,交互部分可以使用Ajax,复杂的动画可采用Flash。 百度2010 1、JS主要数据类型?5分

JavaScript试题集7

一. 单选题 1. 我们可以在下列哪个HTML 元素中放置javascript 代码? A.< script > B.< javascript > C.< js > D.< scripting > ★标准答案:A 2. 预测以下代码片段的输出结果: var str ; alert(typeof str); A.. string ; B.. undefined; C.. object ; D.. String; ★标准答案:B 3. 下列哪个不是Javascript 中注释的正确写法:( ) A.< !-- …… -- > B.//…… C./*……*/ D. /* …… */ ★标准答案:A 4. 以下哪项不属于Javascript 的特征? A.Javascript 是一种脚本语言 B.Javascript 是事件驱动的 C.Javascript 代码需要编译以后才能执行 D.Javascript 是独立于平台的 ★标准答案:C 5. 关于以下两个陈述的描述中,正确的是:( ) 陈述1:Javascript 是弱类型语言 陈述2:Javascript 的常用类型包括:int 、string 、boolean A.陈述1正确,陈述2错误 B.陈述1错误,陈述2正确 C.两个陈述都正确 D.两个陈述都错误 ★标准答案:A 6. 阅读下面的JavaScript 代码: < HTML > < BODY > < SCRIPT LANGUAGE="JavaScript" > function f(y) { var x=y*y; return x; } for(x=0;x< 5;x++) { y=f(x); document.writeln(y); } < /SCRIPT > < /BODY > < /HTML > 输出结果是()。 A.0 1 2 3 4 B.0 1 4 9 16 C.0 1 4 9 16 25 D.以上答案都不对 ★标准答案:B 7. 在Javascript 中,需要声明一个整数类型的变量num ,以下 哪个语句能实现上述要求? A.int num;

前端js面试题

JQ 常见选择器? ,号选择器,分组选择器。空格,祖父选择器。>大于号,父子选择器。+号选择器,紧接下一个兄弟选择器。~号,元素之后所有的 siblings 元素。 :first,:last,:not,:first-child,:last-child,:animated.:checked jQuery 插件实现方式,分别介绍? jQuery.fn.extend 封装直接在$下面的方法,就是根下面, 扩展 jQuery 元素集来提供新的方法(通常用来制作插件)。 $.extend 用来在 jQuery 命名空间上增加新函数。用一个或多个其他对象来扩展一个对象,返回被扩展的对象 批量的方法用 fn,静态的用$.extend(),不建议用扩展到根下面。 bind 和live 的区别? live 方法其实是 bind 方法的变种,其基本功能就同 bind 方法的功能是一样的,都是为一个元素绑定某个事件,但是 bind 方法只能给当前存在的元素绑定事件,对于事后采用 JS 等方式新生成的元素无效,而 live 方法则正好弥补了 bind 方法的这个缺陷,它可以对后生成的元素也可以绑定相应的事件. js 和jq 如何转换? jQuery 对象是通过 jQuery 包装 DOM 对象后产生的对象。jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法;例如:$("#img").attr("src","test.jpg"); 这里的 $("#img")就是 jQuery 对象。 DOM 对象就是 Javascript 固有的一些对象操作。DOM 对象能使用 Javascript 固有的方法,但是不能使用 jQuery 里的方法。例如: document.getElementById("img").src = “test.jpg";这里的 document.getElementById("img") 就是 DOM 对象。 $("#img").attr("src","test.jpg"); 和 document.getElementById("img").src = "test.jpg"; 是等价的,是正确的,但是 $("#img").src = "test.jpg" ;或者document.getElementById("img").attr("src","test.jpg"); 都是错误的。 DOM 对象转成jQuery 对象 对于已经是一个 DOM 对象,只需要用 $() 把 DOM 对象包装起来,就可以获得一个 jQuery 对象了,$(DOM 对象) 如:var v = document.getElementById("v"); //DOM 对象

javascript期末考试模拟题

、单项选择题(本题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的 ,请将其正确答案涂写在答题卡 上。 1. 以“s”为文件扩展名的文件是 _________ (A) html 文件 (B)网页文件 (C) Java 文件 (D) Javascript 文件 2. 以下合法的变量名是 ______ (A) new (B) _123 3. 以下正确的字符串是___ (A) xyz (B) xyz"' 4. 设有语句: var st1= test st1=st1+ 25; 贝U st1的值是 _____ 。 (A) test25 ' (B) 25 5. 123+ ”789 ”的值是 _____ _ (A) 123789 ' (B) 912 6. 表达式(a=2,b=5,a>b?a:b (A) 2 (B) 5 的值为 _______ 8. 设 var a=2,b=3; 则 a++==b?(a-1):b _ 的结果是 。_ A) 0 B) 1 C) 2 D) 3 9. 下面while 循环执行的次数为 __________ var i=5; while (i==0) i--; A)无限 B) 1 C) 5 D) 0 (C) null o (C) xyz ' (D) 2abc (D) xyz ' (C) test ' (D)语法错误 (C) 789 ” (D)语法错误 )的值是 。 (C) 1 (D) 0 7. 设有语句 var a=3,b=5,c=3,d=8,m=3,n=2; 则逻辑表达式(m=a>b)&&(n=c>d) 运算后,n (A) 0 (B) 1 (C) 2 (D) 3

JavaScript 常见面试题

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 JavaScript 常见面试题 2018/03/15 2 var arr = [1, 2, 3, 3, 4, 4, 5, 5, 6, 1]; var newArr =[]; for(var i =0; i arr.length; i++){ if(newArr.indexOf(arr[i]) 0){ newArr.push(arr[i]); } } console.log(newArr); 2、es6 利用set 数组去重方法 changeReArr=(arr)= { // 利用set 将数组转化成set 数据,利用Array from 将set 数据转化成数组return Array.from(new Set(arr)); } console.log(changeReArr([3,3,45,6,7,8,9,5,4])); 3、es6 set 第二种方法 changeReArr2=(arr)= { // 利用...扩展运算付将set 中的值遍历出来重新定义一个 数组// ... 是利用for...of 遍历的return [...new Set(arr)] } console.log(changeReArr2([3,3,45,6,7,8,9,5,4])); 4、实现数组的随机排序 // 方法一var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort1(arr){ for(var i = 0,len = arr.length;i len; i++ ){ var rand = parseInt(Math.random()*len); var temp = arr[rand]; arr[rand] = arr[i]; arr[i] = temp; } return arr; } console.log(randSort1(arr)); // 方法二var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort2(arr){ var mixedArray = []; while(arr.length 0){ var randomIndex = parseInt(Math.random()*arr.length); mixedArray.push(arr[randomIndex]); arr.splice(randomIndex, 1); } return mixedArray; } console.log(randSort2(arr)); // 方法三var arr = [1,2,3,4,5,6,7,8,9,10]; arr.sort(function(){ return Math.random() - 0.5; }) console.log(arr); 5、生成十个10 到100 的随机数并添加到数组里并排序 var iArray = []; function getRandom(istart,iend) { var ichoice = iend - istart; return Math.floor(Math.random() * ichoice + istart); } for(var i =0; i i++){ var nums = getRandom(10,100); if(iArray.indexOf(nums) 0){ iArray.push(nums); }else{ iArray.push(getRandom(10,100)); } } iArray.sort(); console.log(iArray);

html+css+js面试题

html+css+js面试题 87 . 如何求得2和4中最大的数? A) Math.ceil(2,4) B) Math.max(2,4) C) ceil(2,4) D) top(2,4) 88 . 打开名为“window2”的新窗口的JavaScript语法是? A) open.new("https://www.360docs.net/doc/a59295157.html,","window2") B) window.open("https://www.360docs.net/doc/a59295157.html,","window2") C) new("https://www.360docs.net/doc/a59295157.html,","window2") D) new.window("https://www.360docs.net/doc/a59295157.html,","window2") 89 . 如何在浏览器的状态栏放入一条消息? A) statusbar = "put your message here" B) window.status = "put your message here" C) window.status("put your message here") D) status("put your message here") 90.下列不属于文档对象的方法的是() A)createElement B)getElementById C)getElementByName D)forms.length 91.下面这段代码运行的结果() A)弹出一个对象框 B)没有任何输出 C)在文档中显示文档最后修改的时间

javascript期末考试模拟题

一、单项选择题(本题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其正确答案涂写在答题卡上。 1. 以“.js”为文件扩展名的文件是______。 (A) html文件(B) 网页文件(C) Java文件(D) Javascript文件 2.以下合法的变量名是______。 (A) new (B) _123 (C) null (D) 2abc 3.以下正确的字符串是______。 (A) xyz (B) ‘xyz” (C) “xyz’ (D) ‘xyz’ 4.设有语句: var st1=’test’; st1=st1+ 25; 则st1的值是______。 (A) ‘test25’ (B) 25 (C) ‘test’(D) 语法错误 5.123+”789”的值是______。 (A) ‘123789’ (B) 912 (C) “789”(D) 语法错误 6.表达式(a=2,b=5,a>b?a:b)的值是______。 (A) 2 (B) 5 (C) 1 (D) 0 7.设有语句var a=3,b=5,c=3,d=8,m=3,n=2; 则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为_______。 (A) 0 (B) 1 (C) 2 (D) 3 8.设var a=2,b=3; 则a++==b?(a-1):b的结果是___________。 A) 0 B) 1 C) 2 D) 3 9. 下面while循环执行的次数为________。 var i=5; while (i==0) i--; A)无限B) 1 C) 5 D) 0 10. 以下数组的定义中____________是错误的。 A) var a=new Array(); B) var a=new Array(10); C) var a[10]={ 1,2,3}; D) var a=["1",2,"3"]; 11.设var x=3,y=4; 下列表达式中y的值为9的是________。 A)y*=x-3 B)y/=x*9 C)y-=x+10 D)y+=x+2 12. 在程序中有多个相关联的选项,若要默认选择某一项,应在该项中增加_________属性。 A) checked B) default C) selected D) defaultValue 13.结果为NaN的表达式是______。 (A) "80"+"19" (B) "十九"+"八十" (C) "八十"*"十九" (D) "80"*"19" 14.执行下面语句后c的值是_______。 var a=2,b=1,c=3; if(a

JavaScript笔试题

《使用JavaScript增强交互效果》内部测试-笔试试卷 一、选择题(单选或多选题) 1.下面HTML标签中,默认占据整行的是(AB )。 A.

B.
C. D. 2.下面选项中,(AC )可以设置网页中某个标签的左外边距为5像素。A.margin:0 5px B.margin:5px 0 0 0; C.margin:0 0 0 5px; D.padding-left:5px; 3.在CSS中,为页面中的某个DIV标签设置以下样式,则该标签的实际宽度为(D )。div { width:200px; padding:0 20px; border:5px; } A.200px B.220px C.240px D.250px 4.在HTML中,DIV默认样式下是不带滚动条的,若要使
标签出现滚动条,需要为该标签定义( C )样式。 A.overflow:hidden; B.display:block; C.overflow:scroll; D.display:scroll; 5.阅读下面HTML代码,下面选项中增加的样式可以使两个DIV不在同一行显示的是(BD )。

......

...... A..box2{ clear:left; } B..box2{ clear:both; } C..box1{ clear:right; } D..box2 { clear:right; } 6.某页面中有一个1行3列的表格,其中表格行的id为row1,下列选项中能在表格中增加一列,并且这一列显示在最后面的是(C)。 A.document.getElementById("row1").Cells(3); B.document.getElementById("row1"). insertCell (2); C.document.getElementById("row1").insertCell(3); D.document.getElementById("row1").insertCell(0); 7.下列正则表达式中(B )可以匹配首位是小写字母或数字,其它位数是小写字母的最少 两位的字符串。 A./^ \w{2,}$/ B./^ [a-z0-9][a-z]+$/ C./^ [a-z0-9][a-z]*$/ D./^ [a-z0-9]\d+$/ 8.关于HTML中的表格和样式,下面说法错误的是( D )。 A.表格的边框可以使用CSS来控制 B.单元格的尺寸可以使用CSS来控制 C.单元格的背景颜色可以使用CSS来控制 D.单元格的跨行或跨列可以使用CSS来控制 9.CSS样式background-position:5px -10px代表的意义是( D )。 A.背景图片向左偏移5px,向下偏移10px B.背景图片向左偏移5px,向上偏移10px C.背景图片向右偏移5px,向下偏移10px D.背景图片向右偏移5px,向上偏移10px

JavaScript精选面试题

一选择题(单选) 1、以下哪条语句会产生运行错误:() A.var obj = (); B.var obj = []; C.var obj = {}; D.var obj = //; 答案:A 2、以下哪个单词不属于javascript保留字:() A.with B.parent C.class D.void 答案:B 3、请选择结果为真的表达式:() A.null instanceof Object B.null === undefined C.null == undefined D.NaN == NaN 答案:C 二、不定项选择题 4、请选择对javascript理解有误的:() A.JScript 是javascript的简称 B.javascript是网景公司开发的一种Java脚本语言,其目的是为了简化Java的开发难度 C.FireFox 和IE存在大量兼容性问题的主要原因在于他们对javascript 的支持不同上 D.AJAX技术一定要使用javascript技术 答案:ABCD 5、foo对象有att属性,那么获取att属性的值,以下哪些做法是可以的:() A.foo.att B.foo(“att”) C.foo[“att”] D.foo{“att”} E.foo[“a”+”t”+”t”] 答案:ACE

6、在不指定特殊属性的情况下,哪几种HTML标签可以手动输入文本:() A. B. C. D.

答案:AB 7、以下哪些是javascript的全局函数:() A.escape B.parseFloat C.eval D.setTimeout E.alert 答案:ABC 8、关于IFrame表述正确的有:() A.通过IFrame,网页可以嵌入其他网页内容,并可以动态更改 B.在相同域名下,内嵌的IFrame可以获取外层网页的对象 C.在相同域名下,外层网页脚本可以获取IFrame网页内的对象 D.可以通过脚本调整IFrame 的大小 答案:ABCD 9、关于表格表述正确的有:() A.表格中可以包含TBODY元素 B.表格中可以包含CAPTION元素 C.表格中可以包含多个TBODY元素 D.表格中可以包含COLGROUP元素 E.表格中可以包含COL元素 答案:ABCDE 10、关于IE的window对象表述正确的有:() A.window.opener属性本身就是指向window对象 B.window.reload() 方法可以用来刷新当前页面 C.window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.html页面 D.定义了全局变量g;可以用window.g的方式来存取该变量 答案:ACD 三、问答题

Javascript考试题目选择题

复习题 一、选择题 1、写“Hello World”的正确javascript语法是?(A) A. document.write("Hello World") B. "Hello World" C. response.write("Hello World") D. ("Hello World") 2、JS特性不包括( D ) A.解释性 B.用于客户端 C.基于对象 D.面向对象 3、下列JS的判断语句中( )是正确的(A) A.if(i==0) B.if(i=0) C.if i==0 then D.if i=0 then 4、下列JavaScript的循环语句中( )是正确的( D ) A.if(i<10;i++) B.for(i=0;i<10) C.for i=1 to 10 D.for(i=0;i<=10;i++) 5、下列的哪一个表达式将返回假( B ) A.!(3<=1) B.(4>=4)&&(5<=2) C.(“a”==”a”)&&(“c”!=”d”) D.(2<3)||(3<2) 6、下列选项中,( )不是网页中的事件(D) A.onclick B.onmouseover C.onsubmit D.onpressbutton 7、有语句“var x=0;while(____) x+=2;”,要使while循环体执行10次,空白处的循环判定式应写为:( C ) A.x<10 B. x<=10 C.x<20 D.x<=20 8、JS语句( B ) var a1=10; var a2=20; alert(“a1+a2=”+a1+a2) 将显示( )结果 A.a1+a2=30 B.a1+a2=1020 C.a1+a2=a1+a2 9、将字串s中的所有字母变为小写字母的方法是( B) A.s.toSmallCase() B.s.toLowerCase() C.s.toUpperCase() D.s.toUpperChars() 10、以下( )表达式产生一个0~7之间(含0,7)的随机整数. ( C ) A.Math.floor(Math.random()*6) B.Math.floor(Math.random()*7) C.Math. floor(Math.random()*8) D.Math.ceil(Math.random()*8) 11、产生当前日期的方法是( C ) A.Now(); B.Date() C.new Date() D.new Now() 12、如果想在网页显示后,动态地改变网页的标题( C ) A.是不可能的 B.通过document.write(“新的标题内容”) C. 通过document.title=(“新的标题内容”) D. 通过document.changeTitle(“新的标题内容”) 13、某网页中有一个窗体对象,其名称是mainForm,该窗体对象的第一个元素是按钮,其名称

js面试题大全

解释AJAX? Ajax的全称是:AsynchronousJavaScript+XML Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。 Ajax(AsynchronousJavaScriptandXML)是结合了Java技术、XML以及JavaScript等编程技术,可以让开发人员构建基于Java技术的Web应用,并打破了使用页面重载的惯例。 Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。 ajax有什么组成,各组件作用是什么? 由JavaScript、CSS、DOM、XMLHttpRequest组成。 JavaScript:将所有的东西绑定在一起。 CSS:级联样式表 DOM:进行动态显示及交互。 XMLHttpRequest:进行异步数据查询、检索。 写出ajax的编程六步骤? 触发一个事件 创建一个XMLHttpRequest请求 设置回调函数 打开一个链接open() 发送请求send() 编写处理请求函数(回调函数) ajax中向服务器发送消息的get和post有什么区别? get:参数以URL方式进行提交,参数用来提交给服务器看,需要服务器端主动拿取。get不安全,而且URL 长度有限制,编码问题也会出现。 post:参数包含在请求体中提交,服务器端直接从请求中获得数据。 写出AJAX中处理从服务器得到的数据的两种方式? (1)以文本字符串的方式返回服务器的响应 (2)以XMLDocument对象方式返回响应 什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,但是也使用了类似于高级语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 写出JSON的具体形式?

javascript期末考试

javascript 1、数据类型有哪些? 答:1 数字型:整数(number)、十六进制、八进制、浮点型(1.3) 2 字符串型:(string) 3 布尔型: (true) 4 特殊数据类型:转义字符(\b)、未定义值(undefined)、空值(nll) 2、什么是Cookie?如何读写Cookie?Cookie有什么作用? 答:Cookie:1.是web服务器保存在用户计算机上的文本文件的小块用户信息。 2.是浏览器提供的一种机制 3.包括临时和永久两种。 Cookie的写入:先将Cookie的名称和Cookie的值放入一个变量中,然后将变量赋给Document对象的cookie属性。当用户将Cookie写入后,新的Cookie字符串自动添加到原来Cookie字符串的后面。如:var cookiename=”name4”; V ar cookievalue=”value4”; V ar totalcookie=cookiename+”=”+cookievalue; Document.cookie=totalcookie; Cookie的读取:使用document.cookie读取cookie Cookie的主要用途:1.保存用户登录状态。2.跟踪用户行为。3.创建购物车。4.实施民意测验 3、循环语句: For语句、while语句、do ... While语句。 4、常用的javascript数据结构: 标示符、关键字、常量、变量 5、运算符: 算数运算符、比较运算符、赋值运算符、字符运算符、布尔运算符、条件运算符、其他运算符。 1 水仙花数 new document 水仙花数

2 阶乘 B. C. D.

基础JavaScript面试问题及答案

基础JavaScript面试问题及答案 1.使用typeof bar === "object"来确定bar是否是对象的潜在陷阱是什么?如何避免这个陷阱? 尽管typeof bar === "object"是检查bar是否对象的可靠方法,令人惊讶的是在JavaScript 中null也被认为是对象! 因此,令大多数开发人员惊讶的是,下面的代码将输出true (而不是false) 到控制台: var bar = null;console.log(typeof bar === "object"); // logs true! 只要清楚这一点,同时检查bar是否为null,就可以很容易地避免问题: console.log((bar !== null) && (typeof bar === "object")); // logs false 要答全问题,还有其他两件事情值得注意: 首先,上述解决方案将返回false,当bar是一个函数的时候。在大多数情况下,这是期望行为,但当你也想对函数返回true的话,你可以修改上面的解决方案为: console.log((bar !== null) && ((typeof bar === "object") || (typeof bar === "function")));

第二,上述解决方案将返回true,当bar是一个数组(例如,当var bar = [];)的时候。在大多数情况下,这是期望行为,因为数组是真正的对象,但当你也想对数组返回false时,你可以修改上面的解决方案为: console.log((bar !== null) && (typeof bar === "object") && (toString.call(ba r) !== "[object Array]")); 或者,如果你使用jQuery的话: console.log((bar !== null) && (typeof bar === "object") && (! $.isArray(ba r))); 2.下面的代码将输出什么到控制台,为什么? (function(){ var a = b = 3; })(); console.log("a defined? " + (typeof a !== 'undefined'));console.log("b defin ed? " + (typeof b !== 'undefined')); 由于a和b都定义在函数的封闭范围内,并且都始于var关键字,大多数JavaScript开发人员期望typeof a和typeof b在上面的例子中都是undefined。

《网页设计与制作》期末考试试题与及答案

《网页设计与制作》期末考试试题 一、单项选择题(本大题共30小题,每小题2分,共60分) 1、目前在Internet上应用最为广泛的服务是( )。 A、FTP服务 B、WWW服务 C、Telnet服务 D、Gopher服务 2、域名系统DNS的含义是( )。 A、Direct Network System B、Domain Name Service C、Dynamic Network System D、Distributed Network Service 3、主机域名center. nbu. edu. cn由四个子域组成,其中( )子域代表国别代码。 A、center B、nbu C、edu D、cn 4、当阅读来自港澳台地区站点的页面文档时,应使用的正确文本编码格式是( )。 A、GB码 B、Unicode码 C、BIG5码 D、HZ码 5、当标记的TYPE属性值为( )时,代表一个可选多项的复选框。 A、TEXT B、PASSWORD C、RADIO D、CHECKBOX 6、为了标识一个HTML文件开始应该使用的HTML标记是( )。 A、

B、 C、 D、 7、在客户端网页脚本语言中最为通用的是( )。 A、javascript B、VB C、Perl D、ASP 8、在HTML中,标记的Size属性最大取值可以是( )。 A、5 B、6 C、7 D、8 9、在HTML中,单元格的标记是( )。 A、 D、 10、在DHTML中把整个文档的各个元素作为对象处理的技术是( )。 A、HTML B、CSS C、DOM D、Script(脚本语言) 11、下面不属于CSS插入形式的是( )。 A、索引式 B、内联式 C、嵌入式 D、外部式 12、在网页中最为常用的两种图像格式是( )。 A、JPEG和GIF B、JPEG和PSD C、GIF和BMP D、BMP和PSD 13、如果站点服务器支持安全套接层(SSL),那么连接到安全站点上的所有URL开头是( )。 A、HTTP B、HTTPS C、SHTTP D、SSL 14、在HTML中,要定义一个空链接使用的标记是( ). A、 B、 C、 D、 15、对远程服务器上的文件进行维护时,通常采用的手段是( ) A、POP3 B、FTP C、SMTP D、Gopher 16、下列Web服务器上的目录权限级别中,最安全的权限级别是( ) A、读取 B、执行 C、脚本 D、写入 17、用Fireworks切割图形时,需要的工具是() A、裁剪 B、选取框 C、切片 D、自由变形 18、Internet上使用的最重要的两个协议是( ) A、TCP和Telnet B、TCP和IP C、TCP和SMTP D、IP和Telnet 19、body元素用于背景颜色的属性是() A、alink B、vlink C、bgcolor D、background 20、下面说法错误的是( )

B、 C、