2023年javascript面试题

上传人:回**** 文档编号:167185965 上传时间:2022-11-02 格式:DOC 页数:38 大小:81KB
收藏 版权申诉 举报 下载
2023年javascript面试题_第1页
第1页 / 共38页
2023年javascript面试题_第2页
第2页 / 共38页
2023年javascript面试题_第3页
第3页 / 共38页
资源描述:

《2023年javascript面试题》由会员分享,可在线阅读,更多相关《2023年javascript面试题(38页珍藏版)》请在装配图网上搜索。

1、JavaScript面试题一、单选题 1、以下哪条语句会产生运营错误:(A) A.var obj = ( ); B.var obj = ;空数组 C.var obj = ; D.var obj = / /; 2、以下哪个单词不属于javascript保存字:(B)哪些是javascript的保存字 A. with B. parent C. class D. void 3、请选择结果为真的表达式:(C) A. null instanceof Object instanceof 检查类型 B. null = undefinedfalse C. null = undefined true D. Na

2、N = NaN false NaN是一个不和任何数字相同的,类型也是number 二、不定项选择题 4、请选择对javascript理解有误的:(ABCD) A. JScript是javascript的简称 B. javascript是网景公司开发的一种Java脚本语言,其目的是为了简化Java的开发难度 C. FireFox和IE存在大量兼容性问题的重要因素在于他们对javascript的支持不同上 D. AJAX技术一定要使用javascript技术 5、 foo对象有att属性,那么获取att属性的值,以下哪些做法是可以的:(ACE) A. foo.att B. foo(“att”) C

3、. foo“att” D. foo“att” E. foo“a”+”t”+”t” 6、在不指定特殊属性的情况下,哪几种HTML标签可以手动输入文本:(AB) A. B. C. D. 7、以下哪些是javascript的全局函数:(ABC) A. escape B. parseFloat C. eval D. setTimeout E. alert 8、关于IFrame表述对的的有:(ABCD) A. 通过IFrame,网页可以嵌入其他网页内容,并可以动态更改 B. 在相同域名下,内嵌的IFrame可以获取外层网页的对象 C. 在相同域名下,外层网页脚本可以获取IFrame网页内的对象 D. 可

4、以通过脚本调整IFrame的大小 9、关于表格表述对的的有:(ABCDE) A. 表格中可以包含TBODY元素 B. 表格中可以包含CAPTION元素 C. 表格中可以包含多个TBODY元素 D. 表格中可以包含COLGROUP元素 E. 表格中可以包含COL元素 10、关于IE的window对象表述对的的有:(ACD) A. window.opener属性自身就是指向window对象 B. window.reload()方法可以用来刷新当前页面 C. window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.ht

5、ml页面 D. 定义了全局变量g;可以用window.g的方式来存取该变量 三、问答题: 1、谈谈javascript数组排序方法sort()的使用,重点介绍sort()参数的使用及其内部机制 sort的实现的功能类似JAVA的比较器,数据排序从多维数组的第一维开始排序 可以自己定义排序方法,很不多的函数 2、简述DIV元素和SPAN元素的区别。 DIV有回车,SPAN没有 3、结合text这段结构,谈谈innerHTML outerHTML innerText之间的区别。 这个问题只要写一下看的很清楚 innerHTML对象里面的HTML,outerHTML涉及对象和里面的 innerTex

6、t对象里面的文本 4、说几条XHTML规范的内容(至少3条) 属性加引号,不能有不匹配的标签,加定义 5、对Web标准化(或网站重构)知道哪些相关的知识,简述几条你知道的Web标准? W3C标准等 四、程序题: 1、完毕foo()函数的内容,规定可以弹出对话框提醒当前选中的是第几个单选框。 function foo() / 在此处添加代码 var rg = document.getElementsByName(radioGroup); for( vari = 0;i rg.length;i+) if( rgi.checked ) alert(你选择了第 + (i+1) + 个单选框); ret

7、urn false; 2、填充注释部分的函数体,使得foo()函数调用弹出”成功”的对话框。代码应尽量简短。 function foo() var str = reverse(a,b,c,d,e,f,g); alert(str); if (str = g,f,e,d,c,b,a) alert(成功); else alert(失败); function reverse(str) / 在此处加入代码,完毕字符串翻转功能 var spl = str.split(,); var newstr=; for(i=spl.length-1;i=0;i-) newstr+=spli+,; newstr=new

8、str.substring(0,newstr.length-1) return newstr; function reverse(str) / 在此处加入代码,完毕字符串翻转功能 return str.split(,).reverse().join(,); var x = 1; var y = 0; var z = 0; function add(n)n=n+1; y = add(x); function add(n)n=n+3; z = add(x); 求y和z 的值是多少?哇,你的第一题很危险啊,不小心就会被忽悠了。 function add没有返回值,y和z都会是undefined,并且

9、,将add函数改好: function add(n)return n=n+1;和function add(n)return n=n+3; y和z都会是4,由于后面定义的add会覆盖前面定义的add。第二道:javascript是面向对象的,怎么体现javascript的继承关系?使用prototype来实现第三道:javascript如何选中一个checkbox,如何设立它无效? function x() document.all.cb10.disabled=true;document.getElementByName(checkbox)i.checked=false; 是设立为不选择 doc

10、ument.getElementByName(checkbox)i.disabled=true; 是设立失效此外尚有一道css的题: 在css中:以下语句各代表什么意思? tdwidth100% .tdwidth100% #tdwidth100% #tdwidth100%tdwidth:100% 将所有的TD宽度设立为和容器的宽度同样(占容器宽度的100%) .tdwidth:100% 类管理器,设立类名为“td”的对象,具体设立同上 #tdwidth:100% ID管理器,设立ID名为“td”的对象 #tdwidth:100% 不知道javascript面试题1如何获取表单域的选择部分的文本

11、? 1 2 3 function _sel(obj)alert(显示文本: + obj.optionsobj.selectedIndex.text);alert(值: + obj.optionsobj.selectedIndex.value);2在JavaScript中定期调用函数 foo() 如何写?function foo()alert(aaaa);a = setTimeout(foo(),100);foo();3var a = 10; var b = 20; var c = 10; alert(a = b); alert(a = b); alert(a = c);结果是?20 true

12、false使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。1. #xxx 2. text-align:center; 3. width:200px; 4. height:200px; 5. border:1pxsolid#ff0; 6. vertical-align:middle; 7. display:table-cell; 8. 9. #xxximg 10. /*ff和opera已经对的居中,这里只需要对iehack,以毒攻毒*/11. margin-top:expression(100-this.height/2); 12. 请给Arra

13、y本地对象增长一个原型方法,它的用途是删除数组条目中反复的条目(也许有多个),返回值是一个包含被删除的反复条目的新数组Array.prototype.unique=function() 1. vartemp=,objlist=,dict=; 2. for(vari=this.length-1;i=0;-i) 3. if(typeof(thisi)=object)/尚有function等 4. 5. /可以动态根据时间生成一个uuid为名字的属性,以免覆盖 6. /比如varexist=_exist+(newDate().getTime() 7. /然后用thisiexist访问 8. if(t

14、hisi._exist) 9. temp.push(thisi); 10. else 11. thisi._exist=1; 12. objlist.push(thisi); 13. 14. else 15. if(thisiindict) 16. temp.push(thisi); 17. else 18. dictthisi=1; 19. objlist.push(thisi); 20. 21. 22. 23. for(vari=objlist.length-1;i=0;-i) 24. objlisti._exist=null; 25. thisi=objlisti; 26. 27. th

15、is.length=objlist.length; 28. returntemp; 29. ; 30. vara=1,2,3,3,2,1,2; 31. alert(a.unique(); 32. alert(a);1、数组的创建var arrayObj = new Array();/创建一个数组var arrayObj = new Array(size);/创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array(element0, element1, ., elementN);创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但事实上所有情

16、况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。2、数组的元素的访问var testGetArrValue=arrayObj1; /获取数组的元素值arrayObj1= 这是新值; /给数组元素赋予新的值3、数组元素的添加arrayObj. push(item1 item2 . . . itemN );/ 将一个或多个新元素添加到数组结尾,并返回数组新长度arrayObj.unshift(item1 item2 . . . itemN );/ 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度arrayObj.s

17、plice(insertPos,0,item1, item2, . . . ,itemN);/将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回。4、数组元素的删除arrayObj.pop(); /移除最后一个元素并返回该元素值arrayObj.shift(); /移除最前一个元素并返回该元素值,数组中元素自动前移arrayObj.splice(deletePos,deleteCount); /删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素5、数组的截取和合并arrayObj.slice(start, end); /以数组

18、的形式返回数组的一部分,注意不涉及 end 相应的元素,假如省略 end 将复制 start 之后的所有元素arrayObj.concat(item1, item2, . . . ,itemN); /将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组6、数组的拷贝arrayObj.slice(0); /返回数组的拷贝数组,注意是一个新的数组,不是指向arrayObj.concat(); /返回数组的拷贝数组,注意是一个新的数组,不是指向7、数组元素的排序arrayObj.reverse(); /反转元素(最前的排到最后、最后的排到最前),返回数组地址ar

19、rayObj.sort(); /对数组元素排序,返回数组地址8、数组元素的字符串化arrayObj.join(separator); /返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用二、数组对象的3个属性1、length 属性 Length属性表达数组的长度,即其中元素的个数。由于数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1。和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。

20、当length属性被设立得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设立得比本来小时,则原先数组中索引大于或等于length的元素的值所有被丢失。下面是演示改变length属性的例子:var arr=12,23,5,3,25,98,76,54,56,76;/定义了一个包含10个数字的数组alert(arr.length); /显示数组的长度10arr.length=12; /增大数组的长度alert(arr.length); /显示数组的长度已经变为12alert(arr8); /显示第9个元素的值,为56arr.length=5; /将数组的长

21、度减少到5,索引等于或超过5的元素被丢弃alert(arr8); /显示第9个元素已经变为undefinedarr.length=10; /将数组长度恢复为10alert(arr8); /虽然长度被恢复为10,但第9个元素却无法收回,显示undefined 由上面的代码我们可以清楚的看到length属性的性质。但length对象不仅可以显式的设立,它也有也许被隐式修改。JavaScript中可以使用一个未声明过的变量,同样,也可以使用一个未定义的数组元素(指索引超过或等于length的元素),这时,length属性的值将被设立为所使用元素索引的值加1。例如下面的代码:var arr=12,23

22、,5,3,25,98,76,54,56,76;alert(arr.length);arr15=34;alert(arr.length); 代码中同样是先定义了一个包含10个数字的数组,通过alert语句可以看出其长度为10。随后使用了索引为15的元素,将其赋值为15,即arr15=34,这时再用alert语句输出数组的长度,得到的是16。无论如何,对于习惯于强类型编程的开发人员来说,这是一个很令人惊讶的特性。事实上,使用new Array()形式创建的数组,其初始长度就是为0,正是对其中未定义元素的操作,才使数组的长度发生变化。 由上面的介绍可以看到,length属性是如此的神奇,运用它可以方

23、便的增长或者减少数组的容量。因此对length属性的进一步了解,有助于在开发过程中灵活运用。2、prototype 属性返回对象类型原型的引用。prototype 属性是 object 共有的。objectName.prototypeobjectName 参数是object对象的名称。说明:用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。 对于数组对象,以以下例子说明prototype 属性的用途。 给数组对象添加返回数组中最大元素值的方法。要完毕这一点,声明一个函数,将它加入 Array.prototype, 并使用它。function a

24、rray_max( ) var i, max = this0; for (i = 1; i this.length; i+) if (max thisi) max = thisi; return max;Array.prototype.max = array_max;var x = new Array(1, 2, 3, 4, 5, 6);var y = x.max( );该代码执行后,y 保存数组 x 中的最大值,或说 6。3、constructor 属性表达创建对象的函数。object.constructor /object是对象或函数的名称。说明:constructor 属性是所有具有 p

25、rototype 的对象的成员。它们涉及除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。例如:x = new String(Hi);if (x.constructor = String) / 进行解决(条件为真)。或function MyFunc / 函数体。y = new MyFunc;if (y.constructor = MyFunc) / 进行解决(条件为真)。对于数组来说:y = new Array();1. /* 2. *全选的所有指定名称的checkbox 3. *state全选的chec

26、kbox的状态 4. *name表格中的所有checkbox的名称 5. *authorfangtf 6. *typevoid 7. */8. functionselectAll(state,name) 9. varids=document.getElementsByName(name); 10. for(vari=0;iids.length;i+) 11. 12. idsi.checked=state; 13. 14. 15. 16. 17. /* 18. *全选的所有指定id名称的同名checkbox 19. *state全选的checkbox的状态 20. *name表格中的所有chec

27、kbox的名称 21. *name表格中的所有checkbox的id 22. *authorfangtf 23. *typevoid 24. */25. functionselectAllCheckboxByID(state,name,id) 26. varids=document.getElementsByName(name); 27. for(vari=0;iids.length;i+) 28. 29. if(idsi.id=id) 30. 31. idsi.checked=state; 32. 33. 34. 35. 36. 37. /* 38. *全选页面上所有的checkbox 39

28、. *state全选的checkbox的状态 40. *authorfangtf 41. *typevoid 42. */43. functionselectAlls(state) 44. 45. varinputs=document.getElementsByTagName(input); 46. for(vari=0;iinputs.length;i+) 47. 48. if(inputsi.type=checkbox) 49. 50. inputsi.checked=state; 51. 52. 53. 54. 55. 56. 57. /* 58. *得到鼠标所单击的行 59. *typ

29、eObject 60. */61. functionGetRow(oElem) 62. while(oElem) 63. if(oElem.tagName.toLowerCase()=tr&oElem.parentElement.tagName.toLowerCase()=tbody) 64. returnoElem; 65. 66. if(oElem.tagName.toLowerCase()=table|oElem.tagName.toLowerCase()=th) 67. returnfalse; 68. 69. oElem=oElem.parentElement; 70. 71. 72

30、. 73. /* 74. *全选当前行的checkbox 75. *state全选的checkbox的状态 76. *authorfangtf 77. *typevoid 78. */79. functionselectRowCheckbox(state) 80. 81. varrow=GetRow(window.event.srcElement); 82. varcells=row.childNodes; 83. for(vari=0;icells.length;i+) 84. 85. varcell=cellsi.childNodes0; 86. if(cell.tagName=INPUT

31、) 87. 88. cell.checked=state; 89. 90. 91. 92. 93. /* 94. *选中指定值的Radio 95. *如:有两个radio, 96. *第一个的name=ids,value=1 97. *第二个的name=ids,value= 98. *调用方法selectRadio(ids,1); 99. *那么数值为的Radio将被选中 100. *nameradio的名称 101. *valueradio的值 102. *authorfangtf 103. *typevoid 104. */105. functionselectRadio(name,val

32、ue) 106. varradioObject=document.getElementsByName(name); 107. if(value=) 108. 109. radioObject0.checked=true; 110. return; 111. 112. for(vari=0;iradioObject.length;i+) 113. 114. if(radioObjecti.value=value) 115. 116. radioObjecti.checked=true; 117. break; 118. 119. 120. 121. 122. 123. 124. /* 125.

33、*选中指定值的checkbox 126. *如:有两个checkbox, 127. *第一个的name=ids,value=1 128. *第二个的name=ids,value= 129. *第三个的name=ids,value=3 130. *调用这个方法selectCheckbox(ids,1,2)那么数值为,的checkbox将被选中 131. * 132. *name要选中的checkbox数组的名称 133. *value判断时候选中的值 134. *authorfangtf 135. *typevoid 136. */137. functionselectCheckbox(name

34、,value) 138. varcheckObject=document.getElementsByName(name); 139. varvalues=value.split(,); 140. for(varj=0;jvalues.length;j+) 141. 142. for(vari=0;icheckObject.length;i+) 143. 144. if(checkObjecti.value=valuesj) 145. 146. checkObjecti.checked=true; 147. break; 148. 149. 150. 151. 152. 153. 154. /*

35、 155. *选中指定值的select 156. *如:有一个名称为user的select 157. * 158. * 159. *调用这个方法selectOption(user,0)那么选项为0的选项就被选中 160. * 161. *nameStringselect的名称 162. *valueString判断时候选中的值 163. *authorfangtf 164. *typevoid 165. */166. functionselectOption(name,value) 167. 168. document.getElementsByName(name)0.value=value;

36、 169. 170. web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么? 所传输的数据必须是可序列化的。由于需要转换为XML格式以可以穿越防火墙,做到真正的数据共享。 由于DataSet解决DataTable的序列化以便进行封送解决,所以无法传递单个DataTable在 ADO.NET 的三个基本数据对象 DataReader、DataTable 和 DataSet 中,只有 DataSet 可以与 Web 服务之间传递。这是由于,为了与 Web 服务进行通信,对象必须是可序列化的。(序列化是一个过程,它用于将对象的公共属性转换为

37、 XML,并且由于 XML 只是纯文本,所以可以将其从一个应用程序传输到另一个应用程序,并且可以穿越防火墙,从而克服了 COM 的重要障碍之一。)DataReader 无法序列化,由于它们需要到服务器的开放连接。并且,由于 DataSet 解决 DataTable 的序列化以便进行封送解决,所以您也无法传递单个 DataTable。让我们研究一些示例。传递 DataSet假设我们正在运营一个订阅 Web 服务,该服务可返回所请求的有价证券在给定日期的收盘价格。用户传入用户 ID 和密码,以及他/她希望看到的有价证券和收盘价格的 DataTable。Web 服务随后验证他/她的成员身份并返回一个

38、 DataTable,其中包含股票符号和它们的收盘价格,或者包含错误信息。 由于使用者应用程序(即,“消耗”该 Web 服务的应用程序)的开发人员需要知道股票符号和错误信息的盼望结构,因此 DataSet 需要遵守您提供的发布规范。出于我们的目的,我们将假设以下条件:股票符号将存储在一个 DataTable 中,它包含三个列:一个名为 Symbol、类型为 varchar(5) 的列,一个名为 ClosingDate、类型为 datetime 的列,以及一个名为 Price、类型为 float 的列。假如在此过程中的任何时候生成错误,都将在一个只包含一列的 DataTable 中返回错误信息

39、该列的名称为 ErrorMessage,类型为 varchar(100),并且包含错误信息。通过简朴地引用所返回 DataTable 的列 count,开发人员可以知道该过程是否成功。编写函数,用于过滤一个数组内反复的元素,并用这些元素重构一个新数组,新数组内也不能有反复元素。/* 1. * 2. *author: 3. */4. 5. Array.prototype.indexOf=function(val) 6. varindex=-1; 7. for(vari=0;ithis.length;i+) 8. if(thisi=val) 9. index=i; 10. break; 11. 1

40、2. 13. returnindex; 14. 15. Array.prototype.hasOf=function(val) 16. varhas=0; 17. for(vari=0;ithis.length;i+) 18. if(thisi=val) 19. has+=1; 20. 21. returnhas; 22. 23. Array.prototype.popRepeat=function() 24. vararr=this,newArray=,arrlen=arr.length,i=0; 25. while(i1) 27. arr.splice(i,1); 28. arrlen-;

41、 29. if(newArray.indexOf(arri)0) 30. newArray.push(arri); 31. 32. else 33. i+; 34. 35. 36. returnnewArray; 37. 38. /* 39. *test 40. */41. vararray=6,4,4,abc,function()alert(abc),4,4,a:1,b:3,c:5,3,3,7,1,a:1,b:2,3,3,3,2,2,2,2,9,99,9,9,5,5; 42. varnewArray=array.popRepeat(); 43. alert(array); 44. alert

42、(newArray); 第二种方法1. Array.prototype.include=function(object) 2. for(vari=0;ithis.length;i+) 3. 4. if(object=thisi) 5. returntrue; 6. 7. returnfalse; 8. 9. Array.prototype.uniq=function() 10. vartemp=; 11. for(vari=0;ithis.length;i+) 12. 13. if(!temp.include(thisi) 14. temp.push(thisi); 15. 16. retur

43、ntemp; 17. 18. Array.prototype.selfUniq=function() 19. vartemp=this.uniq(); 20. this.length=0; 21. for(vari=0;itemp.length;i+) 22. 23. this.push(tempi); 24. 25. returnthis; 26. 方法一:去反复数据 Array.prototype.distinct=function() var a=,b=; for(var prop in this) var d = thisprop; if (d=aprop) continue; /防止

44、循环到prototype if (bd!=1) a.push(d); bd=1; return a; var x=a,b,c,d,b,a,e,a,b,c,d,b,a,e; document.write(原始数组:+x); document.write(); document.write(去反复后:+x.distinct(); 方法二:取反复数据 Array.prototype.distinct=function() var a=,b=,c=,d=; for(var prop in this) var d = thisprop; if (d=aprop) continue; /防止循环到prot

45、otype if (bd!=1) a.push(d); bd=1; else c.push(d); dd=1; /return a; return c.distinct1(); Array.prototype.distinct1=function() var a=,b=; for(var prop in this) var d = thisprop; if (d=aprop) continue; /防止循环到prototype if (bd!=1) a.push(d); bd=1; return a; var x=a,b,c,d,b,a,e,a,b,c,d,b,a,e,f,f,g; document.write(原始数组:+x); document.write(); document.write(去反复后:+x.distinct(); 基本操作 var a=new Array(cctv,sxtv,tytv); var a=new Array(3); var a=new Array(); a0=cctv; a1=sxtv; a2=tytv; a3=xzy; for(i=0;ia.length;i+) document.writeln(ai); 多维数组 s

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!