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


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


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

    🎉往期回顾:

    🍧汇总(持续更新)

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

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

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

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

    function fn(value){
    
    console.log(arguments instanceof Array); ...①
    
    console.log(arguments.length);...②
    
    console.log(value);...var arr = [...arguments];...}
    
    fn(1,2,3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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()();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    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();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    • 2

  • 相关阅读:
    Go测试学习
    一个案例体会Vue的优势
    如何在IAR软件中使用STLINK V2编译下载和调试stm8单片机
    【回归预测-BP预测】基于灰狼算法优化BP神经网络实现数据回归预测附matlab代码
    [C++] C/C++内存管理、
    大豆耐涝的秘密
    傻瓜式调用阿里云的接口进行三要素(姓名、手机号和身份证号)校验
    TensorFlow 03(Keras)
    【App自动化测试】(十二)App异常弹框处理
    vue3-admin商品管理后台项目(后台布局layout布局开发二)
  • 原文地址:https://blog.csdn.net/sinat_51673411/article/details/133580975