一微网站建设公司,广告设计主要做哪些,口碑营销优化推广,电子网站建设价格大家思考一下 [ ] [ ] #xff1f; 答案是空字符串 为什么呢#xff1f; 当做加法运算的时候#xff0c;发现左右两端存在非原始类型#xff0c;也就是引用类型对象#xff0c;就会对对象做隐式类型转换 如何执行的#xff1f;或者说怎么查找的#xff1f; 第一步…大家思考一下 [ ] [ ] 答案是空字符串 为什么呢 当做加法运算的时候发现左右两端存在非原始类型也就是引用类型对象就会对对象做隐式类型转换 如何执行的或者说怎么查找的 第一步会去对象中查找是否有 [Symbol.toPrimitive] let obj {[Symbol.toPrimitive]() {return 123 //如果返回引用数据类型 下面打印会报错}}console.log(obj 1); //124如果不存在就进入第二步查找是否存在valueOf let obj {valueOf() {return 1 }}console.log(obj 1); //2如果valueOf返回的也是引用数据类型就会进入第三步toString() let obj {valueOf() {return [] //如果返回引用数据类型就会进入第三步},toString() {return 1}}console.log(obj 1); //2所有为什么[ ] [ ] 呢 因为它依次查找找到最后发现是 [ ] 就会执行最后一步 [ ].toString()也就是空字符串
那[ ] ![ ] ? 答案是false
这个是布尔判定 不是类型转换 大家熟知的布尔为false的有NaN Undefined Null “ ” 0 false 除了这些东西 其它都为true ![ ] 为false 空字符串 false false console.log([] ![]);//false感谢大家的阅读如有不对的地方可以向我提出感谢大家