JS笔试题及答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

JS笔试题及答案

一、选择题(每题5分,共25分)

下列关于变量声明的说法,错误的是()

A.var声明的变量存在变量提升,函数声明也存在提升且优先级高于var

B.let声明的变量具有块级作用域,同一作用域内不能重复声明

C.const声明的变量一旦赋值就不能修改,所以const声明的变量必须立即赋值

D.使用let/const声明的变量,在声明前访问会抛出ReferenceError,而var声明的变量会返回undefined

答案:C

解析:const声明的是“常量引用”,不是“值不可变”。如果const声明的是对象/数组,对象的属性、数组的元素是可以修改的,比如constobj={a:1};obj.a=2是合法的。只有当const声明的是基本类型(数字、字符串等)时,值才不能修改,且const声明必须立即赋值,这一点是对的,但选项C的表述“一旦赋值就不能修改”忽略了引用类型的情况,所以错误。

下列代码执行后,控制台输出结果是()

functionfn(){

vara=1;

functioninner(){

console.log(a);

vara=2;

}

inner();

}

fn();

A.1B.2C.undefinedD.抛出错误

答案:C

解析:var存在变量提升,inner函数内的vara=2会提升到inner函数顶部,相当于:

functioninner(){

vara;//提升,此时a为undefined

console.log(a);//输出undefined

a=2;

}

虽然外部fn函数有a=1,但inner函数内声明了同名变量,会覆盖外部变量,所以输出undefined。

关于JS原型,下列说法正确的是()

A.每个对象都有prototype属性,指向它的原型对象

B.构造函数的prototype属性,就是其实例的原型对象

C.通过Object.create(null)创建的对象,有原型对象

D.原型链的终点是Object.prototype,它的原型是null

答案:B

解析:A错误,只有函数(构造函数)有prototype属性,普通对象只有__proto__(隐式原型)指向原型对象;C错误,Object.create(null)创建的是“无原型对象”,它没有__proto__,也没有原型链;D错误,原型链终点是null,Object.prototype的原型是null,表述顺序反了;B正确,比如functionPerson(){};constp=newPerson(),p的原型就是Person.prototype。

下列异步代码执行后,控制台输出顺序是()

console.log(1);

setTimeout(()={

console.log(2);

},0);

Promise.resolve().then(()={

console.log(3);

});

console.log(4);

A.1432B.1423C.1342D.1234

答案:A

解析:JS是单线程,遵循“先同步,后异步”,异步又分“微任务(Promise.then/catch/finally、async/await等)”和“宏任务(setTimeout、setInterval、DOM事件等)”,执行顺序:

先执行同步代码:console.log(1)→console.log(4),输出1、4;

同步代码执行完,清空微任务队列:Promise.resolve().then()是微任务,输出3;

微任务清空后,执行宏任务队列:setTimeout是宏任务,输出2;

最终顺序1432。

下列关于事件委托的说法,错误的是()

A.事件委托利用事件冒泡机制,将子元素的事件绑定到父元素上

B.事件委托可以减少事件绑定的数量,优化性能

C.事件委托中,通过event.target可以获取到触发事件的子元素

D.事件委托只能用于点击事件(click),不能用于其他事件(如input、mouseover)

答案:D

解析:事件委托适用于所有支持冒泡的事件,比如input(输入事件)、mouseover(鼠标悬浮事件)、keydown(键盘按下事件)等,只要事件能冒泡到父元素,就能用事件委托,所以D错误。

二、编程题(每题1

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档