zoukankan      html  css  js  c++  java
  • 20年整理容易犯错的js基础知识面试题

    一)请写出下面打印出来的值:
    console.log(+true) //1 console.log(!"") //true console.log(!"ss") // false console.log("" == false) // true console.log('ss' == true) // false

    console.log(!!null);
    //false

    console.log(!!"")
    //false

    console.log(!!1)
    //true

    [] === [] //false 

    undefined === undefined //true

    [] == [] //false

    undefined == undefined //true

     

    二)
    let a = 3; let b = new Number(3); console.log(a == b); console.log(a === b); 答案是:true false new Number()是一个内置的函数构造函数。 虽然它看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。ps:==会引发隐式类型转换,右侧的对象类型会自动拆箱为Number类型。

      

    三)
    class Chameleon {
      static colorChange(newColor) {
        this.newColor = newColor;
      }
    
      constructor({ newColor = "green" } = {}) {
        this.newColor = newColor;
      }
    }
    
    const freddie = new Chameleon({ newColor: "purple" });
    freddie.colorChange("orange");
    
    答案分析:colorChange方法是静态的。 静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。 由于freddie是一个子级对象,函数不会传递,所以在freddie实例上不存在freddie方法:抛出TypeError。
    

      

    四)
    function bark() {
      console.log("Woof!");
    }
    
    bark.animal = "dog";
    //dog
    这在JavaScript中是可能的,因为函数也是对象!(原始类型之外的所有东西都是对象)
    
    函数是一种特殊类型的对象。您自己编写的代码并不是实际的函数。 该函数是具有属性的对象,此属性是可调用的。

    function Person(firstName, lastName) {
      this.firstName = firstName;
      this.lastName = lastName;
    }
    const member = new Person("Lydia", "Hallie");
    Person.getFullName = () => this.firstName + this.lastName;
    console.log(member.getFullName());
    //TypeError

    您不能像使用常规对象那样向构造函数添加属性。 如果要一次向所有对象添加功能,则必须使用原型。 所以在这种情况下应该这样写:

    Person.prototype.getFullName = function () {

      return `${this.firstName} ${this.lastName}`;
    }
    五)
    function getPersonInfo(one, two, three) {
      console.log(one);
      console.log(two);
      console.log(three);
    }
    const person = "Lydia";
    const age = 21;
    getPersonInfo`${person} is ${age} years old`;
    
    //["", "is", "years old"] Lydia 21
    如果使用标记的模板字符串,则第一个参数的值始终是字符串值的数组。 其余参数获取传递到模板字符串中的表达式的值!
    

      

    
    
    六)
    function getAge(...args) {
      console.log(typeof args);
    }
    
    getAge(21);
    //object
    扩展运算符(... args)返回一个带参数的数组。 数组是一个对象,因此typeof args返回object。
    

      以上内容参考公众号:前端食堂的【再送你43道JavaScript面试题】

      

  • 相关阅读:
    oracle导入脚本sh
    spring事件
    mysqls数据库中 数据存在则更新,不存在则插入
    mysql中字符串的数据类型
    PHP实现从文本域textarea输入数据库并保持格式输出到html页面
    PHP实现返回上一页不刷新 和刷新的方法
    KSweb 中如何使用桌面的navicat链接数据库?
    KSweb不能上传文档?
    错误:Parse error: syntax error, unexpected '[' in D:phpStudyWWWdw_newplug-in
    PHP在使用MVC模式编写页面时,include的view页面后加载不上CSS样式问题的原因及解决方法?
  • 原文地址:https://www.cnblogs.com/jiajiamiao/p/12606828.html
Copyright © 2011-2022 走看看