这篇文章里面问的一些知识点都是我在与学长交谈时候遇到的有关网页的问题。
一、js数据类型
学长问:在js当中的基本数据类型有哪些?
答:Number,Boolean ,额我不确定string是不是基本数据类型,因为在js上的时候我当时没怎么关注他们的数据类型是基本数据类型还是引用数据类型,只记了一下js都有什么类型的数据,没去细细的研究具体的数据类型。当时想着跟java差不多。因为string的数据类型在java是一个引用数据类型。但是在js中用typeof 进行检测的时候返回的不是object而是String 类型。
画外音:之后总结的时候我感觉到了,学长当时已经知道我在这方面的知识不牢固了。
学长问:那null呢?它用typeof进行检测之后返回什么呢?
答:null用typeof进行检测返回的是object类型。
问:那null是引用数据类型吗?
答:(想了一会儿)我不清楚。
画外音:感觉当时要猝死了,这应该都算是基础问题了,平时没感觉什么,现在自己都想问自己平时都学了什么啊?
学长讲:null虽然返回的是object但是它是一个基本数据类型。
画外音:当时学长稍微给我讲了一下然后说让我后来看一下。
二、'==' 与 '==='
问:1==2==0 和1===2===0 结果分别是什么?慢慢想,不急。(布尔值)
我想了一会儿,没看就什么啊!
答:应该都是true吧!我有点看不出来啊。
问:知道== 和===的区别吗?
答:知道啊,因为js是一门弱语言类型的语言。==的话是不会进行类型检测的,只会进行值的检测,检测值是否相等。===会进行类型检测,检测比较的两个内容是否为同一个类型和值是否相同。
学长说:嗯好,那我现在告诉你答案,你推断一下,第一个答案是true第二个是false。
这个时候我忽然就关注到了比较中的最后的0。类型检测,还有0。这不就是显而易见的嘛。
答:
(1)1==2==0
因为第一个1==2的时候的结果是一个false,然后,后边的事情就是 false==0进行检测了。既然他不会进行类型检测,并且走的时候0是可以当false使用的。那么根据这两条依据,最终比较的时候就是false ==false,所以说第一个结果返回的是true。
(2)1===2===0
因为===会进行类型检测这是它和==的区别,所以在比较的时候1===2会进行值和类型的检测。类型他们都是数字,类型相同,值不相同,返回的还是false,然后就是false===0进行比较了。因为会进行类型检测所以说这一次,0不会再被隐式的转化为false了,所以比较的还是false===0,因为类型不相同,所以直接返回了false。所以第二题的答案是false。
总结
本来还是有好多知识点的,但是感觉自己没有吃透,所以就不写了。这次考核之后感觉,自己虽然有扩展,但是对于一些知识的细节还是把握的不到位,基础的知识点还是有没照顾到的地方。