杰普javascript试题一讲解

合集下载

javascript笔试题及答案

javascript笔试题及答案

javascript笔试题及答案### JavaScript 笔试题及答案#### 题目一:数组去重问题描述:给定一个数组,编写一个函数来移除数组中的所有重复元素,只保留唯一的元素。

代码实现:```javascriptfunction uniqueArray(arr) {return [...new Set(arr)];}// 测试console.log(uniqueArray([1, 2, 2, 3, 4, 4, 5])); // 输出: [1, 2, 3, 4, 5]```#### 题目二:深拷贝对象问题描述:编写一个函数来实现对象的深拷贝,确保拷贝后的属性和原对象的属性是独立的。

代码实现:```javascriptfunction deepClone(obj) {if (obj === null || typeof obj !== 'object') {return obj;}let cloneObj = Array.isArray(obj) ? [] : {};for (let key in obj) {if (obj.hasOwnProperty(key)) {cloneObj[key] = deepClone(obj[key]);}}return cloneObj;}// 测试let original = { a: 1, b: { c: 2 } };let copied = deepClone(original);copied.b.c = 3;console.log(original.b.c); // 输出: 2```#### 题目三:实现 Promise.all问题描述:实现一个函数,该函数接受一个 Promise 数组作为参数,并返回一个新的 Promise,当所有输入的 Promise 都成功时,返回的 Promise 将被解决。

代码实现:```javascriptfunction customPromiseAll(promises) {return new Promise((resolve, reject) => {let resolvedCount = 0;let result = [];promises.forEach((promise, index) => {promise.then(value => {result[index] = value;resolvedCount++;if (resolvedCount === promises.length) {resolve(result);}}).catch(reject);});});}// 测试customPromiseAll([Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)]).then(console.log); // 输出: [1, 2, 3]```#### 题目四:计算斐波那契数列问题描述:编写一个函数来计算斐波那契数列的第 n 项。

常见js面试题及答案

常见js面试题及答案

常见js面试题及答案1. 解释JavaScript中的闭包是什么?闭包是一个函数和声明该函数的词法环境的组合。

闭包让你可以从内部函数访问外部函数作用域中的变量,即使外部函数已经执行完毕。

2. JavaScript中的`var`、`let`和`const`之间有什么区别?- `var`:函数作用域或全局作用域,变量提升。

- `let`:块级作用域,没有变量提升。

- `const`:块级作用域,声明时必须初始化,且值不可改变。

3. 如何判断一个对象是否为数组?可以使用`Array.isArray()`方法来判断一个对象是否为数组。

4. 解释JavaScript中的原型继承。

原型继承是一种基于原型链的继承方式,每个对象都有一个原型对象,对象的属性和方法可以通过原型链向上查找。

5. 什么是事件冒泡和事件捕获?- 事件冒泡:事件从最具体的元素开始,逐级向上传播到最不具体的节点。

- 事件捕获:事件从最不具体的节点开始,逐级向下传播到最具体的元素。

6. 如何实现深拷贝?可以使用递归复制对象的每个属性,对于数组和对象类型的属性,继续递归拷贝。

7. 解释JavaScript中的异步编程。

异步编程允许程序在等待某些操作完成时继续执行其他任务,常见的异步编程模式有回调函数、Promise、async/await等。

8. 什么是IIFE?IIFE(Immediately Invoked Function Expression)是一种立即执行的函数表达式,它在定义后立即被调用。

9. 如何实现防抖和节流?- 防抖(Debounce):在指定时间内,连续触发事件只执行最后一次。

- 节流(Throttle):在指定时间内,只执行一次事件。

10. 解释JavaScript中的事件循环。

事件循环是JavaScript运行时环境的一部分,它负责管理调用栈和任务队列,确保异步任务在适当的时候执行。

11. 什么是Promise?Promise是一个代表异步操作最终完成或失败的对象,它有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。

JavaScript程序设计试题一及答案

JavaScript程序设计试题一及答案
B.在相同域名下,内嵌的IFrame可以获取外层网页的对象
C.在相同域名下,外层网页脚本可以获取IFrame网页内的对象
D.可以通过脚本调整IFrame的大小
9、关于表格表述正确的有:()
A.表格中可以包含TBODY元素B.表格中可以包含CAPTION元素
C.表格中可以包含多个TBODY元素D.表格中可以包含COLGROUP元素
E.表格中可以包含COL元素
10、关于IE的window对象表述正确的有:()
A. window.opener属性本身就是指向window对象
B. window.reload()方法可以Fra bibliotek来刷新当前页面
C. window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.html页面
}
newstr=newstr.substring(0,newstr.length-1)
return newstr;
}
return str.split(",").reverse().join(",");
B. javascript是网景公司开发的一种Java脚本语言,其目的是为了简化Java的开发难度
C. FireFox和IE存在大量兼容性问题的主要原因在于他们对javascript的支持不同上
D. AJAX技术一定要使用javascript技术
5、foo对象有att属性,那么获取att属性的值,以下哪些做法是可以的:()
3、请选择结果为真的表达式:()
A. null instanceof Object B. null === undefined

js 面试题及答案

js 面试题及答案

js 面试题及答案JavaScript(简称 JS)是一种基于对象和事件驱动的脚本语言,常用于网页开发。

在进行JS开发时,经常需要面试来选择优秀的候选人。

本文将针对常见的JS面试题提供详细的答案,帮助读者更好地准备面试。

一、变量和数据类型1. 什么是变量?变量是用于存储和表示数据的一个名字。

在JS中,可以使用var、let或const关键字来声明一个变量。

2. 有哪些常见的数据类型?JS中有七种常见的数据类型,分别是:字符串(string)、数字(number)、布尔值(boolean)、对象(object)、数组(array)、Null和Undefined。

3. Null和Undefined有什么区别?Null表示一个空对象指针,也可以用于表示空值;Undefined表示一个未定义的值,即变量声明但未被赋值。

二、运算符和流程控制1. 请解释一下什么是短路求值。

短路求值是指在进行逻辑与(&&)和逻辑或(||)运算时,如果能根据前面的条件判断出最终结果,则停止执行后续的条件判断。

2. 请解释一下什么是深拷贝和浅拷贝。

深拷贝是指创建一个新的对像或数组,将原来对象或数组中的值完全复制到新对象或数组中。

浅拷贝是指将原对象或数组中的引用复制给新对象或数组。

3. 如何判断一个变量的具体数据类型?可以使用typeof运算符来判断一个变量的具体数据类型。

例如,typeof 5将返回"number"。

三、函数和作用域1. 什么是闭包?闭包是指一个函数能够访问和操作在其词法作用域外的变量。

2. 匿名函数和具名函数有什么区别?匿名函数没有名字,通常用于声明立即执行的函数。

具名函数则有名字,能够在定义后被多次调用。

3. 请解释一下什么是作用域链。

作用域链是指在函数执行期间,JS引擎按照函数的嵌套关系,从内层函数到外层函数依次查找变量的过程。

四、面向对象编程1. 什么是原型?原型链又是什么?每个对象都有一个原型对象,在没有定义某个属性或方法时会根据原型链进行查找。

Javascript综合复习试题(卷)大全和答案解析

Javascript综合复习试题(卷)大全和答案解析

Javascript综合复习试题(卷)大全和答案解析Javascript综合复习题【共116题】每份考卷中javascript只占一半。

题型和分数如下:1. 单选题:10题*1分=10分2. 填空题:5题*1分=5分3. 程序阅读题:2题*4分=8分4. 程序实现题:2题*5分=10分5. 简答题:3题*5分=15分合计:48分,共22题。

剩余52分,23题是另一门课程。

【提示:本综合复习题的目的是让同学们多见识各种题目。

选择题、填空题以及程序阅读题可以仔细做,对于程序实现和简答题建议先理解再记忆,切记死背答案。

】第一部分:单选题1. Javascript中,以下哪条语句一定会产生运行错误?答案(B )A、var _变量=NaN;B、var Obj = [];C、var obj = //;D、var obj = {};2. 以下两个变量a和b,a+b的哪个结果是NaN ?答案( C )A、var a=undefind; b=NaNB、v ara= '123' ; b=NaNC、var a =undefined , b =NaND、var a=NaN , b='undefined'3. var a=10; b=20; c=4; ++b+c+a++ 以下哪个结果是正确的?答案(B )A、34B、35C、36D、374. Javascript中,以下代码运行后变量y的值是:答案( D )var x = [ ‘ abcde ' , 123456];var y = typeof typeof x[1];A、"function"B、"object"C、"number"D、"string"5. Javascript中,以下那两个变量的值不是==: 答案( B )A、var a=0 , b=-0;B、var a=NaN , b=NaN;C、var a=nullb=un defi ned;D、var a=[] , b=false;6. Javascript中,以下声明变量语句中哪个不正确?答案(D )A、var aa;B、var bb=3; cc='good';C、var dd = ee = 100;D、var ff=3, gg='he's good';7. Javascript中,foo对象有att属性,那么以下获取att属性值的表达式哪个是错误的?答案(C )A、foo.attB、foo["att"]C、foo{"att"}D、foo["a"+"t"+"t"]8. Javascript中,以下代码运行后变量y的值是:答案(B )var x = [typeof x, typeof y][1];var y = typeof typeof x;A、”n umber"B、"string"C、"undefined"D、"object"9. 下面哪个javascript变量名称不合法( D )A. stri ngB. le ngthC.非法字符D.this10. 下面哪个描述不正确(B )A. NaN!=nullB.NaN==NaNC.{}!=falseD. null!=false11. var arr = new Array(new Array(9,0,3,4,5) , ['a' , 'b' , 'c'] , newArray(2,9,0,6));则arr[1][3]= ( D )A.cB.6C.4D.u ndefi ned12. 有如下代码:var arr = new Array(9);arr[0]=1;arr[2]=2;该数组的length属性值为(D )A、2B、10C、8D、913. 有一个submit按钮,在这个按钮控件上添加哪个事件不起作用? ( D)A.onM ouseoutB.onm ouseoverC.on clickD.on submit14. 有一个变量var a=typeof string + 100+50 + NaN,以下哪个是alert(a)的结果?( C )A.fu nctio n150NaNB. fun ctio n10050NaNC. un defi ned10050NaND. NaN15.以下代码,哪个结果是正确的?(A)var str='123abc';str += str.replace('abc', ”);alert(str);A.123abc123B. 123abcC.123D. abc16. 以下哪个结果是正确的? ( C )var a=100 ,b="100.5a6", c="100.1";alert(Math.max(a , b ,c));A.100B. 100.1C.NaND.u ndefi ned17. 以下哪个语句能正确弹出结果:(D )A. alert(new Date(2011 , 12,25).getDay());B. alert(new Date(2011 , 12,25,5).getDay());C. alert(new Date(2011 , 12,25,5,5,9).getDay());D. 以上三个结果都正确18. 以下代码正确的运行结果是?( C )var arr=[0,1,2,3,4,5,6];arr2 = arr.slice(2,5);alert(arr2);A. 1,2,3B. 1,2,3,4C. 2,3,4D. 2,3,4,519. 下面哪个描述不正确(B )A. NaN!=nullB.nu ll!=u ndefi nedC.{}!=falseD.n ull!=false20. var a = new Array(new Array(9,0,3,6,5), new Array(2,9,0,6));则a[0][3]=21. 有一个变量var a=(100+50)+undefined+NaN ,以下哪个是(B )A.150u ndefin edNaNB.NaNC.150u ndefi ned10050u ndefi nedNaN22. 以下代码,哪个结果是正确的?(C )var a='123.5abc',b='100abc'; alert(parse In t(a)+Number(b));A.123100abcB. 123.5abc100abcC.NaN23. 以下哪个结果是正确的? ( B )var a=100,b="100.56",c="80"; alert(Math.max(a , b ,c)); A.100B. 100.56C.NaN24. 以下哪个正则表达式符号的描述正确? ( C )A. * 等同{1,}B. + 等同{0,}C. ?等同{0,1}D. \W 等同[0-9A-Za-z_] 25. 请选择结果为真的表达式:( C )A. typeof null !="object"B. n ull===un defi nedA.3B.6C.5D.Oalert(a)的结果?D.D. 223D.80C. 1 == "01.00"D. NaNNaN26. 以下哪个单词不属于javascript保留字:(C )A. withB. in sta nceofC. baseD. void27. 设置下拉列表框中某项被默认选中的属性是(C )A.checkedB. checkC. selectedD.select28. nodeType属性可用于获取节点类型,如果返回值为1,则表明该节点为(B )。

js基础试题及答案(一)

js基础试题及答案(一)

js基础试题及答案(⼀)⼀、单选题(共30题,每题2分)1.如下代码,会弹出来是什么 var num1=“1” ;var num2=1 alert(num1-num2);A 0B 11C 1+1D 报错正确答案: A解析:相减,进⾏隐⼠转换,全部为数字2.如下代码,会弹出来是什么 var num1=“hi” var num2=1 alert(num1+num2);A hi1B 1C hiD 报错正确答案: A解析:字符串拼接3.在JS中,“1555”+3的运⾏结果是A 1558B 1552C 15553D 1553正确答案: C解析:155534.parseInt(“20.2aa”) 返回值为A 20B 20.2C 20.2aaDNaN正确答案: A解析:205.分析输出结果是function sum(a){ a = a + 2; }var res = sum(2);console.log(res);A 2B 4C NaND undefined正确答案: D解析:undefined6.var a = false;var x = a? “A” : “B”;最终x的值为A AB BC trueD false正确答案: B解析:B7.下列变量名合法的是A 5showB returnC $userD var正确答案: C解析:变量名不能以数字开头,A错;BD是关键字,C正确8.需要在 html 页⾯上引⽤脚本⽂件myJs.js,下列语句中,正确的是A <script href="myJs.js" type="text/javascript" />B <script src="myJs.js" type="text/javascript" />C <script href="myJs.js" type="text/javascript"></script>D <script src="myJs.js" type="text/javascript"></script>正确答案: D解析:script 是双标签,src引⼊⽂件9.代码的输出结果是var a = 3;var b = 2;var c = (a+2)/b;document.write ©;A 2.0B 2.5C 16.0D (3+2)/2正确答案: B解析:js弱类型,(2+3)/2=2.510.代码的输出结果是function add(){undefinedvar sum = 1 + 2 ;console.log( sum ) ;}console.log(sum) ;A 输出两个3B 输出⼀个3C 程序报错D 输出⼀个undefined正确答案: C解析:sum是局部变量,全局环境未定义11.typeof null 检测出来的数据类型是A nullB numberC objectD undefined正确答案: C解析:null是空对象12.parseInt(“12a”)的结果是A NaNB 12aC 0D 12正确答案: D解析:因为parseInt()的转换规则:跳过开头结尾的空字符,从左到右依次执⾏转换,碰到第⼀个不认识的数字则停⽌,所以答案为D13.下列的哪⼀个表达式将返回假A !(3<=1)B (4>=4)&&(5<=2)C 2<3D (2<3)||(3<2)正确答案: B解析:&& 左右有⼀侧为假 ;整个表达式就为假14.关于循环下列说法正确的是A while循环⾄少会运⾏⼀次B do…while循环⾄少会运⾏⼀次C for循环⾄少会运⾏⼀次D switch循环⾄少会运⾏⼀次正确答案: B解析:do…while 是先执⾏后判断,不管条件成不成⽴,都会⾄少执⾏⼀次15.for(var i = 0; i < 10; i++){ i++; }console.log(i)的值是?A 10B 9C undefinedD 7正确答案: A解析:i++ 最终为10; 不⼩于10;结束for循环;此时i为1016.下⾯代码的执⾏结果为var a = 20;function foo(){undefinedconsole.log(a) ;var a = 10 ;console.log(a) ;}foo();A 20 10B 10 10C 20 20D undefined 10正确答案: D解析:函数中的a会变量提升;所以第⼀个a是undefined;a 赋值了10;所以a 是10;D选项是正确的17.有下述JS代码:var x = 10; var y = 20;var z = x<y ? x++ : ++y ;console.log( ‘x=’ + x + ‘; y=’ + y + ‘; z=’ + z);其运⾏结果是A x=11; y=21; z=11B x=11; y=20; z=10C x=11; y=21; z=10D x=11; y=20; z=11正确答案: B解析:x=11; y=20; z=1018.查看如下代码:function f1( ){undefinedconsole.log(x);var x = 10;123++x;console.log(x);}f1();执⾏后的结果是A 程序错误B undefined 和 10C undefined 和 11D 10 和 11正确答案: C解析:undefined 和 1119.引⽤名为"xxx.js"的外部脚本的正确语法是ABCD正确答案: C解析:JS脚本引⼊⽤src属性20.如下代码,会弹出来是什么 var a; alert(a);A 报错B a is not defineC undefinedD 0正确答案: C解析:变量提升21.如下代码,会弹出来是什么 alert(a);var a=12;A 报错B a is not defineC undefinedD 12正确答案: C解析:变量提升22.的组成不包括A ECMAScriptB DOMC BOMD document正确答案: D解析:23.console.log( typeof 123 === “number”)A 报错B trueC falseD 123正确答案: B解析:得到字符串的"number", 所以类型和值都相等为全等24.代码的输出结果是function fnMax(a,b,c){undefinedvar a,b,c;var max = a > b ? a : b;if(c > max){ max = c; }alert(max);1234567}fnMax(8,2,5);A 5B 2C 8D 10正确答案: C解析:8,2,5中的最⼤值为825.以下哪项不属于javascript的特征A Javascript是⼀种脚本语⾔B Javascript是事件驱动的C Javascript代码需要⼿动编译以后才能执⾏D Javascript是独⽴于平台的正确答案: C解析:JavaScript是基于事件驱动并独⽴于平台的脚本语⾔26.如下代码,会弹出来是什么 var num1=“1” ;var num2=1 alert(num1-num2);A 0B 11C 1+1D 报错正确答案: A解析:相减,进⾏隐⼠转换,全部为数字27.console.log(typeof typeof 123456),在控制台中打印什么内容A 123456B numberC stringD object正确答案: C解析:第⼀个 typeof 123456 返回 “number”然后typeof “number” 返回"string"28.console.log( (2==true)+1 )会弹出A trueB falseC 1D 2正确答案: C解析:29.如下代码,会弹出来是什么 var num1=“1”; var num2=1 alert(num1+num2)A 2B 11C 1+1D 报错正确答案: B解析:隐⼠转换30.下列表达式结果为false的是A !""B !{}C !undefinedD !!5正确答案: B解析:使⽤if去判断⼀个空对象结果仍然是true⼆、多选题(不定项选择)(共20题,每题2分)1.下⾯哪些是循环语句A whileB do…whileC forD switch正确答案: A,B,C解析:while、do…while、for2.下⾯哪些属于选择结构控制语句:A ifB forC switchD while正确答案: A,C解析:固定关键字3.下⾯选项中数据类型为数字类型的有A “1”B 1C trueD NaN正确答案: B,D解析:1、NaN4.下⾯语句得到值为true的有A “1” == 1B 1===“1”C “2” > “19”D “2”==19正确答案: A,C解析:⽐较相等两个等号会有隐式类型转换,只需值相等即可,三个等号必须类型和值同时相等结果才为true,故A对B错字符串之间的⼤⼩⽐较是按照ACSII编码⼤⼩,“2”的ASCII码⽐“1”的ASCII⼤,所以C正确数字跟字符串⽐较⼤⼩会将字符串隐式转换为数字,即 2>19,D选项错误5.下⾯语句得到值为数字2的有A 1 + ‘1’B 8 % ‘3’C ‘1’ + ‘1’D ‘4’ - 2正确答案: B,D解析:A是字符串拼接,结果为:“11”; B“3”会隐式转换位3,结果为8%3=2;C为字符串拼接,结果为 “11”; D“4”会隐式转换为4,结果为4-2=2故,答案为BD6.下⾯哪些是关键字A varB functionC caseD 以上都是关键字正确答案: A,B,C,D解析:var申明变量的关键字;function申明函数的关键字;case选择分⽀的关键字故答案为ABCD7.以下是JavaScript基本数据类型的是A ObjectB numberC stringD boolean正确答案: B,C,D解析:Object是引⽤类型8.以下运算符正确的是A ++B –C &&D >=正确答案: A,B,C,D解析:⾃增、⾃减、逻辑与、⼤于或等于9.JavaScript运算符都有哪些A 赋值运算符B 算术运算符C 关系运算符D 逻辑运算符正确答案: A,B,C,D解析:赋值运算符=、数学运算符+ - * / %、⼀元运算符++ --、逻辑运算符&& || !10.JavaScript的基本组成包括A DOMB BOMC jQueryD ECMAScript正确答案: A,B,D解析:JavaScript的基本组成包括DOM、BOM和ECMAScript11.以下哪些属于循环语句A switchB forC whileD do…while正确答案: B,C,D解析:循环语句 有三个 for while do…while; switch是选择结构12.函数的参数分为A 形参B 实参C 有参D ⽆参正确答案: A,B解析:参数 分为实参和形参13.以下哪些属于基本数据类型A objectB booleanC stringD number正确答案: B,C,D解析:null 和 undefined是特殊数据类型;14.函数中实参可以是A 常量B 变量C 只能是变量D 只能是常量正确答案: A,B解析:实参可以是变量 常量 ,形参只能是变量15.逻辑运算符有A >B <C ||D &&正确答案: C,D解析:逻辑运算符有三个 && || !;AB选项是⽐较16.javascript由哪⼏部分组成A jsB ECMAScriptC DOMD BOM正确答案: B,C,D解析:BCD17.下⾯声明变量及赋值的写法正确的有A var _myName = 12aB var _myName = “12a”C var myName = 12D var $myName = true正确答案: B,C,D解析:A选项 12a是字符串,不是纯数字,字符串要⽤引号18.下⾯哪些⽅法可以实现将字符串"123",变成数值型A Number()B parseInt()C parseFloat()D Boolean()正确答案: A,B,C解析:Boolean()转成布尔值19.下⾯哪些属于关系运算符?A >B >=C <D <=正确答案: A,B,C,D解析:关系20.下⾯哪些属于逻辑运算符?A &&B ||C !D 以上都不正确正确答案: A,B,C解析:逻辑运算符(⼆)⼀、单选题1.已知数组 var arr = [1,2,3,4,5],执⾏ arr.pop() 后,数组的长度是A 4B 5C 6D 7正确答案: A解析:arr.pop()是删除数组后⼀个数据2.var array = new Array(5); array.push(8); 数组array的长度是A 5B 6C 7D 8正确答案: B解析:new Array(5);创建⼀个长度为5的空数组,push⽅法在数组后增加⼀位,结果为63.3秒后,图⽚消失,应该使⽤下⾯哪个⽅法A hide()B setTimeout()C ClearIntervalD clearTimeout()正确答案: B解析:setTimeout延时器4.下⾯哪⼀个⽅法可以查找 class 名为 “xm”的元素A document.getElementsByClassName(“xm”)B document.getElementsByName(“xm”)C document.Class(“xm”)D document.ByName(“xm”)正确答案: A解析:document.getElementsByClassName(“xm”);获取class为xm的元素5.如果弹出⼀个可输⼊信息的框,可以使⽤哪⼀个⽅法A confirm()B prompt()C alert()D以上都对正确答案: B解析:prompt6.如何快速的将数组arr清空A arr.length = 0B arr = “”C arr.length = “”D arr.length = []正确答案: A解析:强⾏将数组的length设置为0,可以清空数组7.Math.floor(-3.14) 的结果是( )A -3.14B -3C -4D 3.14正确答案: C解析:8.下⾯哪个是window窗⼝⼤⼩改变触发的事件A onmouseoverB onresizeC onmouseoutD onclick正确答案: B解析:19.判断下⾯的代码输出为 var a = 1; var b = a * 0; var a; if (b == b) { console.log(b * 2 + “2”- 0 + 4); } else { console.log(!b * 2 + “2”- 0 + 4); }A 6B NaNC 22D 26正确答案: A解析:10.请阅读下⾯代码 var num = Math.floor(Math.random()*100); 上述代码中num的取值范围是A 0–100B 1–99C 0–99D 1–100正确答案: C解析:公式:Math.random()*(max-min+1)+min11.关于nodeName描述错误的是A 元素节点的节点名始终是标签名B ⽂本节点的节点名始终是#documentC ⽂本节点的节点名始终是#textD 属性节点的节点名始终是属性名正确答案: B解析:⽂本节点名称是#text请阅读列代码⽂本list1list2list3以上代码的输出结果是Alist1B " "Clist2Dlist3正确答案: A解析:list.childNodes[0]为⽂本节点13.下列哪个对象不属于bom对象A documentB locationC historyD offsetWidth正确答案: D解析:14.关于JavaScript中的Math对象的说法,正确的是A Math.ceil(512.51)返回的结果为512B Math.floor( )⽅法⽤于对数字进⾏下舍⼊C Math.round(-512.51)返回的结果为-512D Math.random( )返回的结果范围为0-1,包括0和1正确答案: B解析:15.var arr = [3,4,6],删除数组中的最后⼀项A arr.pop()B arr.pop(6)C arr.shift()D arr.shift(6)正确答案: A解析:16.var arr = [5,3,2,4]; var res = arr.splice(0); console.log(res) 结果是A [5,3,2,4]B [5]C [5,3]D [2,4]正确答案: A解析:17.实现数组的倒序⽅法A reverse()B sort()C join()D find()正确答案: A解析:18.var str = “qianfengana”; var res = stIndexOf(“a”); console.log(res); 输出的结果是A 9B 2C 7D 10正确答案: D解析:19.添加节点的⽅法A ⽗节点.appendChild()B ⽗节点.append()C ⽗节点.prepend()D ⽗节点.prependChild()正确答案: A解析:20.var arr = [how,are,you]; arr.reverse(); alert(arr)A how,are,youB you,are,howC h,o,w,a,r,e,y,o,uD u,o,y,e,r,a,w,o,h正确答案: B解析:reverse翻转,直接修改原数组21.下列关于innerHTML和innerText描述正确的是A innerHTML会被解析成html标签渲染,innerText是纯⽂本显⽰B innerHTML会发⽣转义如 < 会被转换成 < ,innerText原样渲染C innerHTML和innerText都会被解析成html标签渲染D innerHTML和innerText都是纯⽂本显⽰正确答案: A解析:innerhtml不会发⽣转义22.关于setInterval(check ,10)中说法正确的是A 程序循环执⾏10次B check函数每10秒执⾏⼀次C 10做为参数传给函数checkD check函数每10毫秒执⾏⼀次正确答案: D解析:基本定时器概念23.获取从1970年/01/01 午夜到当前时间的毫秒值A getTime()B getDay()C setDate()D getDate()正确答案: A解析:A24.var arr = [100,4,2,3,200]; alert(arr.sort(function(a,b){return b - a;}))A 2,3,4,100,200B 200,100,4,3,2C 100,2,200,3,4D 4,3,200,2,100正确答案: B解析:解析:sort添加了⽐较器函数,并且b-a是降序排序25.在JavaScript中,下列关于window对象⽅法的说法错误的是A window对象包括location对象、history对象和document对象B window.onload 事件绑定的函数会在⼀个该页⾯加载完成后执⾏C window.open( )⽅法⽤于关闭指定的URL路径D window.close( )⽅法⽤于关闭浏览器窗⼝正确答案: C解析:open() ⽅法⽤于打开⼀个新的浏览器窗⼝或查找⼀个已命名的窗⼝。

javascript笔试题

javascript笔试题

javascript笔试题本篇文章将为您介绍一些JavaScript笔试题,供您测试和加深对JavaScript的理解和应用。

以下是一些常见的JavaScript笔试题及其解析。

1. 请解释JavaScript的事件冒泡和事件捕获是什么?事件冒泡和事件捕获是两种处理事件的不同策略。

事件冒泡是指当一个元素触发了某个事件时,该事件会从最内层的元素开始,逐级向外传播,直到传播到最外层的元素。

而事件捕获则是从最外层的元素开始,逐级向内传播,直到传播到最内层的元素。

2. 请解释JavaScript中的闭包是什么?闭包是指一个函数可以访问并操作其外部函数中的变量,即使外部函数已经执行完毕。

闭包在JavaScript中非常常见,可以用来创建私有变量、延迟执行函数等。

3. 请解释什么是原型链?原型链是JavaScript中实现继承的一种方式。

每个对象都有一个原型(prototype)属性,该属性指向一个对象。

当读取一个对象的属性时,如果该对象本身不存在该属性,JavaScript会沿着原型链向上查找该属性,直到找到或者到达原型链的顶端(null)为止。

4. 请解释JavaScript中的事件委托是什么?事件委托是一种常见的优化技术,通过将事件监听器绑定到父元素上,利用事件冒泡机制来触发事件。

这种方式可以减少对DOM元素的监听器数量,提高性能,尤其在需要对大量子元素添加事件监听器时非常有效。

5. 请解释JavaScript中的严格模式(strict mode)是什么?严格模式是一种可以帮助开发者编写更规范、更安全JavaScript代码的一种模式。

启用严格模式后,JavaScript引擎会对一些不规范的语法和行为给出错误提示,同时禁用一些不安全的特性。

严格模式可以通过在代码开头添加`"use strict";`来启用。

6. 请解释JavaScript中的this关键字是如何工作的?this关键字用于在函数内部引用函数的调用对象。

javascript试题及答案

javascript试题及答案

javascript试题及答案javascript试题及答案【篇一:javascript考试试卷】txt>1、在javascript中能实现每隔一秒调用函数 foo( )的是()a. setinterval(foo( ),1000)b. clearinteval(foo( ),1000)c. cleartimeout(foo( ),1000)d. settimeout(foo( ),1000)2、以下哪项是javascript函数说法正确的是()a.可以接受参数b.返回一个值c.没有返回类型d. 没有return关键字3、以下哪个对象可用来在浏览器窗口中载入一个新网址() a.document.urlb.window.locationc.window.urld.window.close4、哪个对象包括了alert( )方法.a.windowb.documentc.locationd.body5、分析下面javascript的代码段:forminput type=”text” name=”txt1” value=”txt1”input type=”text” name=”txt2” value=”txt2”onfocus=alert(“我是焦点”) onblur=alert(“我不是焦点”) /form下面的说法正确的是()a. 当用鼠标选中txt2时,弹出“我是焦点”消息框,再用鼠标选中txt1文本框时,弹出“我不是焦点”消息框b. 当用鼠标选中txt1时,弹出“我是焦点”消息框,再用鼠标选中txt2文本框时,弹出“我不是焦点”消息框c. 假如现在输入光标在txt1上,用鼠标单击页面上除txt2以外的其他部分时,弹出“我不是焦点”消息框d. 假如现在输入光标在txt2上,用鼠标单击页面的其他部分时,弹出“我不是焦点”消息框6、在javascript中,文本域不支持的事件包括()a. onblurb. onlostfocusedc.onfocusd.onchange7、(“24.7” + 2.3 ) 的计算结果是()a. 27b. 24.72.3c. 24.72.3d. 26.78、()事件处理程序可用于在用户单击按钮时执行函数a. onsubmitb. onclickc. onchanged. onexit9、用户更改表单元素select 中的值时,就会调用()事件处理程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一题:单项选择题(每题只有一个答案) 【每题1分,共15分】1. 我们可以在下列哪个HTML元素中放置javascript代码(A)A.<script>B.<javascript>C.<js>D.<scripting>2. 预测以下代码片段的输出结果: ( B )var str ;alert(typeof str);A. string ;B. undefined;C. object ;D. String;3. 下列哪个不是Javascript中注释的正确写法:( A)A.< !-- …… -- >B.//……C./*……*/D./*……*/4. 以下哪项不属于Javascript的特征?( C )A.Javascript是一种脚本语言B.Javascript是事件驱动的C.Javascript代码需要编译以后才能执行D.Javascript是独立于平台的5. 阅读下面的JavaScript代码:function f(y) {var x=y*y;return x;}for(x=0;x<5;x++) {y=f(x);document.writeln(y);}输出结果是(B)。

A.0 1 2 3 4B.0 1 4 9 16C.0 1 4 9 16 25D.以上答案都不对6. 关于Javascript中数组的说法中,不正确的是:( A )A.数组的长度必须在创建时给定,之后便不能改变B.由于数组是对象,因此创建数组需要使用new运算符C.数组内元素的类型可以不同D.数组可以在声明的同时进行初始化7. 以下关于Javascript中事件的描述中,不正确的是:(D )A.click——鼠标单击事件B.focus——获取焦点事件C.mouseover——鼠标指针移动到事件源对象上时触发的事件D.change——选择字段时触发的事件8.以下代码片段:function Student(name) { = name;this.move = function() {alert(+"准备移动了");}}Student.prototype.move = function() {alert(+"开始移动了! ");}var st = new Student("李四");st.move();下列说法正确的是( A)A.输出”李四准备移动了”B.输出”李四开始移动了”C.输出”李四准备移动了李四开始移动了””D.程序出错,没有任何输出。

9 预测以下代码片段的输出结果( C)add(10);//覆盖function add(i) { var k = i+10; alert(k); } ;function add(i) { var k = i+20; alert(k); } ;A.40B.20C.30D.程序出错10. 预测以下代码片段的输出结果(C )var student = new Object();student.study = function() {window.alert(“开始学习了”); }study();A.输出“开始学习了”B.程序出错。

不能在实例化对象之后,再添加方法C.程序出错。

study()方法不能直接调用。

应该用student 来调用D.程序出错。

给student.study 赋值时,右边的函数必须有名字11. 考察以下程序片段:var str = “12px”;var s = str.indexof(“2”);alert(s);以下选项正确的是( A )A.输出 1B.输出 2C.输出 pD.输出 1212. 考察以下程序片段( D )function Person() {}Person.prototype.move = function(){alert(+“移动”);}function Student(name) { = name;}Student.prototype.study = function(){alert(+”学习”);}Student.prototype = new Person();var st = new Student(“张三丰”);st.study();st.move();以下选项正确的是?A.依次输出”张三丰学习”“张三丰移动”B.依次输出”张三丰学习”“移动”C.输出”张三丰学习”,之后程序出错D.程序出错,什么都不能输出13 以下不属于Javascript基本类型的是( C )A.stringB.numberC.functionD.boolean14. Javascript是如何实现继承的?(A )A.创建父类对象作为子类的原型(prototype)B.使用extends关键子继承父类C.创建子类对象作为父类的原型(prototype)D.使用class关键子继承父类15. 分析以下程序片段var value = 3;var a = new Object();a.value = 1;b = a;b.value = 2;alert(a.value);以下选项正确的是? ( B )A. 1B.2C.3D.undefined第二题:多项选择题(每题至少有一个答案正确,答错不给分,漏选给一半分)【每题2分,共20分】1. 声明一个对象,给它加上name属性和show方法显示其name 值,以下代码中正确的是(D )A. var obj = [name:"zhangsan",show:function(){alert(name);}];B. var obj = {name:"zhangsan",show:"alert()"};C. var obj = {name:"zhangsan",show:function(){alert(name);}};D. var obj = {name:"zhangsan",show:function(){alert();}};2.以下关于Array数组对象的说法不正确的是( CD )A. 对数组里数据的排序可以用sort函数,如果排序效果非预期,可以给sort函数加一个排序函数的参数B.reverse用于对数组数据的倒序排列C.向数组的最后位置加一个新元素,可以用pop方法D.unshift方法用于向数组删除第一个元素3.点击页面的按钮,使之打开一个新窗口,加载一个网页,以下JavaScript代码中可行的是( AD )A. <input type="button" value="new"onclick="open('new.html', '_blank') "/>B. <input type="button" value="new"onclick="window.location='new.html';"/>C. <input type="button" value="new" onclick=" location.assign('new.html');"/>D. <form target="_blank" action="new.html"><input type="submit" value="new"/> </form>4.阅读以下代码:var s = "true";var o = { toString:function(){return false }}alert(s+o);以下选项正确的是:(A)A. truefalseB. true0C.1falseD.105. 阅读以下代码:var a = 1;run(a);function run(foo){console.log(foo);function foo(){alert(123);}//先加载函数foo = 2;console.log(foo);}输出结果为:( C)A. 1 2B. 123 2C. function foo(){alert(123);} 2D. 代码错误,没有输出结果6. foo对象有attr属性,以下获取attr属性的值的的做法正确的是:( ACD)A. foo.attrB. foo("attr");C. foo["attr"];D. var name = "attr"; foo[name]7. 以下创建数组语法正确的是:(AC )A. var arr = new Array(10);B. var arr = new [1,2,3,4];C. var arr = [1,"true",{name:"briup"}];D. var arr = {1,2,3};8. 阅读以下代码,运行结果为:( A )var num = 1;var obj = {num: 2,showNum:showNum}function showNum(){console.log(this.num);}obj.showNum();showNum();A. 2 1B. 2 2C. 1 1D. 1 29. 阅读以下代码,运行结果为(D )var a = "12a12b"console.log(parseInt(a));console.log(Number(a));A. 1212 12B.1212 NaNC.NaN 1212D.12 NaN10.阅读以下代码,运行结果为: (B)var name = "tom";function person(name){ = name;return ;}console.log(person("terry"));console.log(new person("tom"));A. tom person{name:"tom"}B. terry person{name:"tom"}C. terry tomD. tom terry第三题:填空题【每空1分,共25分】1.至少列出六个常用的String对象的方法_charAt,charCodeAt_IndexOf,_concat,_slice_,_substr______。

相关文档
最新文档