码迷,mamicode.com
首页 > Web开发 > 详细

js中细小点

时间:2019-06-11 11:00:50      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:指针   javascrip   变量类型   条件   mamicode   基础类型   span   div   highlight   

昨天在写前端代码的时候,遇到一个神奇的问题,我判断序号 num 和数组 arr 的 length 是否相等,如果相等则做想要的处理,伪码如下;

if (num === arr.length) {
  function A();
}

结果发现,function A() 不会被执行 ,通过打印 num 和 arr.length,发现这两个的值的变化和预期是一致的,那也就是说,无论 num 和 arr.length 如何变化,"num === arr.length"条件均不成立。

百思不得其解之余,找大神求助了,大神看了一眼说:“把你的三等改成双等试试”,ln内心OS:“这能有用就神了~~”,完了刷新一看,预期的效果还真的出来了(好吧,大型真香现场)。

作为一个杠精,我当然是需要追根究底这是为啥啦(纯属闲的,bug还要不要改了!!)~~

翻了下,强大的某乎大神说:

1、对于string,number 等基础类型,== 和 === 是有区别的
1)不同类型间比较,== 只比较“转化成同一类型后的值”看“值”是否相等,=== 是如果类型不同,其结果就是不等
2)同类型比较,直接进行“值”比较,两者结果一样

2、对于Array,Object 等高级类型,== 和 === 是没有区别的
进行“指针地址”比较

3、基础类型与高级类型,== 和 === 是有区别的
1)对于 ==,将高级转化为基础类型,进行“值”比较
2)因为类型不同,=== 结果为false

那么问题来了,通过打印结果,可以知道我的变量类型是一致的。

alert("num:" + typeof (this.skus[0].num));
      
alert("length:" + typeof (this.skuList.length));

技术图片

技术图片

那么为何用“===”的结果出不来呢?这个问题未知,待有时间再研究下,要继续写代码了~~

js中细小点

标签:指针   javascrip   变量类型   条件   mamicode   基础类型   span   div   highlight   

原文地址:https://www.cnblogs.com/lilala-world/p/11002234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!