常见前端面试题04

使下面输出1

在这里插入图片描述

解答思路

我们想要a取一个东东,来让下面的条件成立,我们必须要明白数据的隐式转换

  1. 对象 == ’123‘, 先调用对象的toString()转化成字符串,然后再看需要等于的类型是否转化成数值。
  2. undefined == null 为真
  3. NAN == NAN 是恒为假的

知道了上面的隐式转化过程,我们可以利用数据的劫持,或者重写隐式转化种调用的函数来达到,我们读取一个变量的值,获取不同结果的目的。

方法一:generator生成器

var a={
    toString = function*(){
        yield 1;
        yield 2;
        yield 3;
    }
}

方法二: a.toString

会转换,规则:
对象字符串 对象.toString
null
undefined 相等 但是和其他值不相等
NaN!=NaN
剩下的都转换成数字

方法三:数据劫持

在这里插入图片描述

方法四:es6的proxy代理

方法五:利用数组的shift方法

在这里插入图片描述

posted @ 2020-10-10 12:13  jacksonni  阅读(120)  评论(0编辑  收藏  举报