前端笔试题总结,带答案和解析(三)

前端笔试题总结,带答案和解析(三)


这个系列将持续更新前端笔试题一期十题,每五题做一个标题(方便跳转),您可以一期一期阅读,也可以在点击汇总,一口气看完,如果对题目有不理解的地方,欢迎大家在评论区提问,如果有更好的意见也欢迎大家留言!!!

🎉往期回顾:

🍧汇总(持续更新)

🎶前端笔试题总结,带答案和解析(一)

前端笔试题总结,带答案和解析(二)

❤️前端笔试题总结,带答案和解析(三)

🎶21.执行以下程序,下列选项中,说法错误的是()

function fn(value){

console.log(arguments instanceof Array); ...①

console.log(arguments.length);...②

console.log(value);...var arr = [...arguments];...}

fn(1,2,3);

A :①式的输出结果为false

B: ②式输出结果为2

C: ③式的输出结果为1

D: ④式可以利用arguments对象新生成一个数组

答案: BD

解析: arguments是函数(除了箭头函数外)的内置对象,它是一个伪数组,因此①式结果为false;arguments对象用来获得函数的全部实参,因此②式输出结果为3而非2;value是函数的形参,匹配第一个实参,因此③式输出结果为1;④式是参数解构,可以新生成一个真正意义上的数组。


🎊22.以下哪些语句触发了隐式的类型转换

A:parseInt(12.34, 10)
B:0 ? 1 : 2
C:2e1 * 0xaa
D:1 + ‘1’

答案: ABD

解析:
A:parseInt() 函数可解析一个字符串,并返回一个整数。
所以说,number类型的12.34发生隐式转换为string。
B:三元运算符,会判断?前的表达式为true或者false。所以number类型的0发生了隐式转换为boolean。
C:e是js里面指数的一种表示形式。也就是10的多少次方。
2e1 等价于 2 *(10^1) = 20
2e2 等价于 2 (10^2)= 200
0xaa是16进制的表示方法。相当于十进制的170。
这里都是number类型,发生了数字的乘法运算:20
170,没有发生类型转换。

D:+运算发生了字符串的隐式转化。原本number类型的1,和string类型的’1’进行了+运算,连接了字符串。返回’11’。


❤️23.var a =[1,4,5,2,9];

下面求a中最大值的代码正确的是

A:Math.max(a)
B:Array.max(a)
C:Math.max.call(null,a)
D:Math.max.apply(null,a)
E:以上均不是

答案: D

解析: 使用apply方法,方法有两个参数,用作 this 的对象和要传递给函数的参数的数组。 可以为方法指定调用对象与传入参数,并且可以让传入的参数以数组的形式组织。 Math.Max.Apply(Math,tmp); 也可以写成 Math.Max.Apply({},tmp);的简写形式


✨24.执行以下程序,输出结果为()

class Phone{
  constructor(price){
    this.price = price;
  }
  get price(){
    return 999;
  }
}
var p = new Phone(888);
console.log(p.price);

A:999
B:undefined
C:抛出异常
D:888

答案: C

解析: 当类中一个属性只有get()方法而无set()方法时,该属性是无法进行赋值的,连构造方法中的初始化都不行,因此,当对象的price属性在构造方法中进行初始化,会抛出异常。


🍿25.对于代码 var a = 10.42; 取出 a 的整数部分,以下代码哪些是正确的?

A:parseInt(a);
B:Math.floor(a);
C:Math.ceil(a);
D:a.split(‘.’)[0];

答案: AB

解析:
A. parseInt转换为整数,默认为10进制,结果为10
B. floor向下取整,结果为10
C. ceil向上取整,结果为11
D. split操作数必需为正则或字符串不能是number,所以不报错


## 🎀26. 执行以下代码,5 秒后内输出的结果为()
for(var i = 0; i < 5; i++){
    setTimeout(function(){
        console.log(i);
    }, 1000 * i);
}

A:1 2 3 4 5
B:0 1 2 3 4
C:4 4 4 4 4
D:5 5 5 5 5

答案: D

解析: setTimeout()是一个异步函数,由于js会先执行所有同步任务,再执行异步任务,所以当开始执行setTimeout()异步任务时,for循环早已结束,并且由var声明的变量i不具有块级作用域的特点,当for循环结束时,i值为5,故再执行setTimeout()函数时,输出结果为5 5 5 5 5,D选项正确。


🎄27. 执行以下程序,输出结果为()
var uname = "window";

var object = {

            uname :"object",

            fun:function(){

                console.log(this.uname);

                return function(){

                   console.log(this.uname);

                }

            }

}

object.fun()();

A:object

B:window

C:object window

D:window object

答案: C

解析: object.fun()()等效于var fn = object.fun(); fn();实际上是调用函数两次,第一次是调用object对象的fun函数,第二次是调用fun函数的返回函数。第一次调用fun函数时,this指向上一级对象,即object对象,因此输出对象object的uname属性值object,第二次调用的返回函数,其this指向window对象,这是因为匿名函数具有全局性,匿名函数的this指向window对象,因此输出结果为window对象的uname属性值window。


🎉28. 执行以下程序,下列选项中,说法正确的是()
class Dog{
  static dog(){
    console.log(this); // ①
    }
  bark(){
    console.log('狗会叫');
    }
}
var dog = new Dog();

A:①式的this指代类的实例对象

B:调用dog方法,既可以使用Dog.dog(),也可以使用dog.dog()

C:调用bark方法,只能使用dog.bark(),不能使用Dog.bark()

D:在类中,不允许静态方法和非静态方法重名

答案: C

解析: dog方法为静态方法,bark方法为实例方法,静态方法本身不能使用实例对象来调用,所以this不会指向实例对象,A选项错误;静态方法只能由类进行调用,实例方法只能由实例对象进行调用,B选项错误,C选项正确;D选项,由于类内部的静态方法的调用者只能为类,实例方法的调用者只能为实例对象,不会在调用时造成歧义,因此允许重名。


🎏29. 如何阻止IE和各大浏览器默认行为( )

A:window.event.cancelBubble = true;
B:window.event.returnValue = false;
C:event.stopPropagation();
D:event.preventDefault();

答案: BD

解析:
阻止默认事件: e.preventDefault() | e.returnValue = false (IE)

阻止冒泡:e.stopPropagation() | e.cancelBubble = true (IE)


🍧30. 下面哪些语句可以 在JS里判断一个对象是否为String类型?

A:oStringObject instanceof String
B:typeof oStringObject == ‘string’
C:oStringObject is String
D:以上答案都不正确

答案: A

解析: 针对 B 注意题干问的是判断一个对象是否为String类型 typeof 对象 ==>“object”

‘hello’ 和 new String(‘hello’) 的区别,前者是字符串字面值,属于原始类型,而后者是对象

typeof 'hello';  // 'string'
typeof new String('hello');  // 'object'

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、信仰_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值