Osheep

时光不回头,当下最重要。

重温javascript数据类型

在javaScript中,有五种简单的数据类型,分别是

  • Undefined
  • Null
  • Boolean
  • Number
  • String

还有一种复杂的数据类型object,object本质是有一组无序的名值对组成的。

typeof

由于ECMAScript是松散类型的,所以提供一种手段来检测数据类型–typoof。

Undefined

在一个变量被声明还未被赋值的时候,你检测它的类型,会是undefined;或者你拿它和undefined直接做比较,它也会返回ture

var massage;
console.log(typeof(massage))//undefined
console.log(massage==undefined)//ture

这一点很重要,因为在后面我们会了解到作用域和变量提升的知识,然后会告诉你定义一个变量最先会被解释为“undefined”,其原理就是undefined的最初定义,请参看《javascript高级程序设计》p24.

说到这里,我想起了以前我做一个项目的时候因为undefined踩的坑。

var str1;
str1+='<li><a href="'
      +list[i].StuLink+
      '"><div class="ranking mt5 mr5 white HihgLight">'                 
      +a+
      '</div>'
      +list[i].StuName+
      '</a></li>';

这是我当时需要把数据拼接起来,可是每次的第一条数据都是返回undefined,当时找了好久都不知道为什么。结果原来是要给str1先赋一个值,比如

var str1='';

这样浏览器就不会把它解析为undefined了。

然后注意一个细节的点

在一个变量未被声明的时候,会产生错误,但typeof会返回undefined

var massage;
var age
console.log(massage);//undefined
console.log(age);//产生错误
console.log(typeof(massage));//undefined
console.log(typeof(age))//undefined

所以一定要注意记得初始化变量,不然你typoof不能判断变量是否已经初始化。

undefined==null的问题

null类型也只有一个值,即null。undefined实际上是从null派生而来的,因此ECMAScript把他们定义为相等的。

alert(null == undefined); //output "true" 
alert(null === undefined); //output "false"严格比较符不发生转化 

尽管两个值相等,但是他们的含义却不一样,undefined是声明了变量但为对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数要返回的是对象,那么找不到该对象时,返回的通常是null。

点赞