2021秋招笔试易错题

  1. 1 instanseof Number
    1 instanceof Number //false
    var a = new Number(1);
    a instanceof Number // true
    原因是:instanceof判断一个对象是否是另一个对象的实例,而数字1是基本数据类型,不是对象,
    var a = new Number(1);是通过包装类Number把数字1转换成对象,你可以用typeof a,和typeof 1,看看他们返回的值

  2. 判断布尔值
    console.log([0]==[0]) //false 两个数组的地址不一样
    console.log([0]==0) //true [0]会先转换为原始值 即’0’ == 0
    console.log({}==0) //false

  3. 哪些能得到‘2020’
    console.log(2020 .toString()) //2020
    console.log(2020…toString()) //2020
    //console.log(2020.toString()) //报错
    console.log(2020.0.toString()) //2020

  4. 请问以下输出结果是什么?
    const name = “sunng”;
    age = 30
    console.log(delete name)
    console.log(delete age)
    结果为:false,true
    原因:因为delete可以删除对象属性,但它无法直接删除变量,也无法删除原型中的变量。此题中,name是变量,而age是window的属性。如果删除成功,delete将返回true,否则false。

  5. JS中的全局函数
    7个:escape(),eval(),isNan(),isFinite(),parseFloat(),parseInt(),unescape();注意:全局函数与window上的存在的方法如alert,setTimeout 不是一类注意区分。

  6. var x = 4,
    obj = {
    x:3,
    bar:function(){
    var x = 2
    setTimeout(function(){
    var x = 1
    alert(this.x)
    },1000)
    }
    }
    obj.bar() //4
    原因:我写的是3,但答案是4。原因是主要看函数的直接调用者是谁,this就是谁!!!像这里setTimeout是属于window的,所以this指向window

  7. 如何将100000转换为100,000这种格式的,也就是如何实现千位分隔符
    function thousands(digit){
    //let reg = /(?=(\B)(\d{3})+KaTeX parse error: Undefined control sequence: \d at position 71: … let reg = /(\̲d̲)(?=(\d{3})+)/g
    console.log(String(digit).match(reg))
    return String(digit).replace(reg,"$1,")
    }
    console.log(thousands(1627485090675))

  8. 资源预加载
    subresource:可以用来指定资源是最高优先级的。
    preload:preload草案建议允许始终预加载某些资源,不像prefetch有可能被浏览器忽略,浏览器必须请求preload标记的资源。
    prerender:prerender是一个重量级的选项,它可以让浏览器提前加载指定页面的所有资源。
    prefetch:当能确定网页在未来一定会使用到某个资源时,开发者可以让浏览器提前请求并且缓存好以供后续使用。prefetch支持预拉取图片、脚本或者任何可以被浏览器缓存的资源。
    资源预加载:https://www.jianshu.com/p/966087809596

  9. 如何实现一个instanceof

    instanceof用于判断引用类型,不能判断普通数据类型!

    instanceof 用于判断某个对象是否是另一个对象(构造方法)的实例。instanceof会查找原型链,直到null如果还不是后面这个对象的实例的话就返回false,否则就返回true

function instanceOf(left, right) {
    let leftValue = left.__proto__;
    let rightValue = right.prototype;
    while (true) {
        if (leftValue === null) {
            return false;
        }
        if (leftValue === rightValue) {
          return true;
        }
    leftValue = leftValue.__proto__;
   }
}
console.log(instanceOf([],Array))
console.log(instanceOf(function(){},Function)) //true

//推荐这一种
function instanceofFun(obj, con){
    if(typeof con != 'function') throw new Error('instance error');   // 构造函数不是函数报错
    if(!obj || (typeof obj != 'object' && typeof obj != 'object')) return false;   // 没有实例或实例不是引用类型返回false

    while (obj.__proto__){  // 最终obj.__proto__是nall的时候退出循环
        if(obj.__proto__ == con.prototype) return true;
        obj = obj.__proto__;
    }
    return false;
}
console.log(instanceofFun([], Array));//true
console.log(instanceofFun(function(){}, Function));//false
  1. const A = function(){this.value = 1}
    const B = function(){this.value = 2}
    const C = function(){this.value = 3}
    const c = new C() //此时输出为 undefined ƒ (){this.value = 3}
    A.prototype = new B()
    C.prototype = new A()
    //const c = new C() //此时输出为 1 ƒ (){this.value = 2}
    console.log(c.proto.value,c.proto.constructor)
  2. 判断以下代码段输出结果是什么
function C() {
  let a = b = 0;//这个等价于b = 0,let a = b  请注意,b=0的前面是没有let的,这样的话就相当于 window.b=0; 这就意味着b始终是全局的,而a则根据作用域而定,可以是全局的,也可以是局部的
  console.log(a,b);
  a++;
  return a;
};
C();
console.log(typeof a, typeof b); //undefined number
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值