美文网首页
var a = ?; if(a == 1 && a == 2 &

var a = ?; if(a == 1 && a == 2 &

作者: H5日常记 | 来源:发表于2021-05-27 14:00 被阅读0次

    1、对象在与字符串拼接或比较时,首先会通过valueOf()方法来调用其原始值。原始值即其本身的值。

    var a ={};

    console.log(a.valueOf());// {}

    console.log(a === a.valueOf());// true

    console.log(typeof a.valueOf());// object

    2、如果值为对象,则会调用toString()方法。若对象本身没有该方法,会返回"[object ObjectName]",其中 ObjectName 是对象类型的名称。

    var a = {};

    console.log(a.toString());// [object Object]

    console.log(a.toString() + 1);// [object Object]1

    console.log(a + 1 === a.toString() + 1);// true

    3、该对象obj下如果有toString()方法,会调用该方法。

    var a = {

        toString(){

            return 1;

        }

    };

    console.log(a.toString());// 1

    console.log(a.toString() + 1);// 2

    console.log(a + 1 === a.toString() + 1);// true

    4、通过以上三点推断出:对象每进行一次比较或拼接都会执行toString方法。

    var num =1;

    var a = {

        toString(){

            return ++num;

        }

    };

    console.log(a+"");// 2

    console.log(a+"");// 3

    console.log(a + 1);// 5

    console.log(a == 5);// true

    5、现在再来看下答案是不是很简单了?

    var  a = {

        i: 1,

        toString: function () {

            return a.i++;

        }

    }

    if (a == 1 && a == 2 && a == 3) {

        console.log(1);

    }

    ————————————————

    版权声明:本文为CSDN博主「张培跃吧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/u012149969/article/details/88983321

    相关文章

      网友评论

          本文标题:var a = ?; if(a == 1 && a == 2 &

          本文链接:https://www.haomeiwen.com/subject/yaorsltx.html