typeof操作符

typeof操作符是用来检测变量的数据类型。对于值或者变量使用typeof操作符会返回如下字符串。

注意,尤其要注意的是,typeof是操作符,不是方法,因此,typeof中的字母’o’是小写的。

语法:typeof temp;  //temp是一个变量,这里可以不加括号,但是为了程序的可读性,最好还是加上括号。

如下:

  • <script>
  • var a=12;
  • alert(typeof a);
  • </script>
字符串 返回值
undefined 未定义
boolean 布尔值
string 字符串
number 数值
object 对象或null
function 函数
  • var box;
  • alert(typeof box)

box是Undefined类型,值是undefined,类型返回的字符串是undefined。

空的对象,表示创建了,里面没有内容;

空对象,表示没有创建,就是null

typeof操作符可是操作变量,也可以操作字面量(字面量是什么?)。虽然也可以这样使用typeof(box),但typeof是操作符而非内置函数。ps:函数在ECMAScript中是对象,不是一种数据类型,所以,使用typeof来区分function和object是非常有必要的。

变量本身是没有类型的,需要赋值;一个变量应该只存放一种类型的函数;这样避免混乱

Undefined类型

Undefined类型只有一个值,即特殊的undefined。在使用var声明变量,但却没有对其初始化时,这个变量的值就是undefined。(以后必须声明一个变量就必须初始化,以避免这种问题)undefinef有两种情况,一是声明了,但是没有定义值;二是没有声明和定义;

undefined和null;undefined表示变量不含有值;可以通过将变量的值设置为null来清空变量;

Null类型

var box=null

你还没有来得及创建对象,先声明一个对象的变量放在那边,默认初始化为null。

alert(undefined == null); true 他们都是空的,所以相等

alert(undefined === null) false 数据类型不相等,第一个是Undefined,返回的值是undefined,第二个是Null,返回的值是object

也等同于alert(typeof undefined == typeof null) false

:Boolean类型

Boolean类型有两个值(字面量):true和false

Number类型

Number类型包括两种数值:整型和浮点型。

由于保存浮点数数值需要的内存空间比整型数值大两倍,因此ECMAScript会自动将可以转换为整型的浮点数值转为整型。

NaN,即非数值(not a number)是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况

ECMAScript提供了isNaN()函数,用来判断这个值到底是不是NaN。isNaN()函数在接收到一个值后,会尝试将这个值转换为数值。

alert(isNaN(NaN)) true

alert(isNaN(25)) false

alert(isNaN(true)) false

有三个函数可以把非零数值转换为数值:Number()、parseInt()和parseFloat()

Number()是转型函数,可以用于任何数据类型,而另外两个则专门用于把字符串转换为数值。

alert(Number(null)) 0

alert(Number(undefined)) NaN

alert(Number(“256″)) 256

alert(Number(“08.9″)) 8.9

alert(Number(“lee123″))  NaN

由于Number()函数在转换字符串时比较复杂且不够合理,因此在处理整数时更常用的是parseInt()

alert(parseInt(‘456Lee’)) 456

alert(parseInt(‘lee456Lee’)) NaN

alert(parseInt(’12Lee56Lee’)) 12

alert(parseInt(‘56.12′)) 56

alert(parseInt(”)) NaN

parseInt除了识别十进制之外还能识别八进制和十六进制。同时它还有第二个参数,用于解决各种进制

alert(parseInt(‘AF’,16)); 175,可以去掉前导0x

parseFloat用于浮点数值转换,和parseInt()一样,从第一位解析到非浮点数值位置。

alert(parseFloat(‘123Lee’)) 123

alert(parseFloat(‘0xA’)) 0 不识别十六进制

parseFloat(‘23.4.5′) 23.4

parseInt只能转数字,遇到非数字的字符串,直接跳出,返回已经读取过的数字;

var a=”abc” alert(parsetInt(a))    ->NaN //非数字的;

  • var a=12  b=abc
  • alert(parsetInt(a)+parsetInt(b))  ->NaN

这句话的意思是12+NaN=NaN,任何数字和NaN相加等于NaN;

  • var a=parsetInt(“abc”)
  • var b=parsetInt(“def”)
  • alert(a==b)             –>false

判断NaN:判断是否为NaN(可用于假如用户输错了,可以用(isNaN())先判断是否出错了,输入所有内容均合格后才正确运费。否则弹窗提示用户)

  • var a=parsetInt(“abc”)
    • alert(isNaN(a))   ->true
  • parseFloat(3.5)
    3.5
    parseInt(0.3)
    0
    parseFloat(12.5)
    12.5
    parseFloat(“12.5px”)
    12.5
    Number(“12.5px”)
    NaN
    Number(“12.5″)
    12.5
String类型

数值转换为String

  • var box =1; var box = true;
  • alert(typeof box.toString())

toString()方法一般不需要传参的,但在数值转换为字符串的时候,可以传递进制参数

如果在转型之前不知道变量是否是null或者undefined的情况下,我们可以使用转型函数String(),这个函数能够将任何类型的值转换成字符串

  • var box=null;
  • alert(String(box));
Object类型

对象其实就是一组数据和功能的集合。

  • var box = {}
  • var box = new Object();

·······