在javascript中,变量的类型可以分为2个大类:1)原始类型(primitive type) 2) 引用类型(reference type)
它们之间的区别在于:
1)原始类型(primitive type):
数据存储在栈(stack)中,既变量可以直接访问到数据。
2) 引用类型(reference type):
数据存储在堆(heap)中,变量访问到的是一个指针,指针指向存储该对象的内存。
一. 原始类型
JS的原始类型(primitive type)又可以分为5大类:underfined, null, boolean, Number, String
我们可以使用typeof 变量,来输出变量的类型。
1) undefined
当声明一个变量却没有初始化时,该变量默认是undefined.
//1. undefined type
var aa;
alert(typeof aa);
alert(aa == undefined);
输出:
undefined
true
2) null
Null表示的是不存在的对象,虽然它与undefined不同,但是javascript中,undefined从null派生出来,因此如下判断
alert(null == undefined); 返回的还是true。
3) boolean
1 var bFound = true;
2 var bLost = false;
3 alert(typeof bFound);
4 alert(typeof bLost);
5 alert(bFound);
6 alert(bLost);
输出:
boolean
boolean
true
false
4) number
在javascript中任何数字,包括整数和浮点数都是number类型。
1 var a = 518;
2 var b = 88.88;
3 alert(typeof a);
4 alert(typeof b);
5
输出:
number
number
5) string
var s = "test";
alert(typeof s);
alert(s.length);
输出:
string
4
二. 类型转换
1)转换成string
number 和 boolean类型可以通过toString()转换成string型,但是undefined和null类型不能转换,但是undefined和null却可以通过
alert输出。
如果想把任何类型转换成字符串,必须使用 String(变量) 函数。
2) 转换成数字
可以有2个函数分别转换成整数和浮点数。
a) parseInt()
1 alert(parseInt("1234blue"));
2 alert(parseInt("0xA"));
3 alert(parseInt("22.5"));
4 alert(parseInt("12blue34"));
5 alert(parseInt("blue34"));
输出:
1234
10
22
12
NaN (Not a Number,表示不是一个数字)
b) parseFloat()
1 alert(parseFloat("1234blue"));
2 alert(parseFloat("0xA"));
3 alert(parseFloat("22.5"));
4 alert(parseFloat("0908"));
5 alert(parseFloat("blue34"));
输出:
1234
0
22。5
908
NaN
3)转换成布尔型
采用Boolean()函数,记住一下几点:
非空字符串,数字,对象,都是true; 空字符串,0,null都是false。
1 alert(Boolean(""));
2 alert(Boolean(0));
3 alert(Boolean(null));
4
5 alert(Boolean("test"));
6 alert(Boolean("0"));
7 alert(Boolean(100));
8 alert(Boolean(new Object()));
输出:
false
false
false
true
true
true
true
三. 引用类型
1) Object类
javascript中的Object类和Java中的java.lang.Object类相似,是所有类的父类。
2)其他一些类
Boolean, Number, String
instanceof 函数可以判断一个对象是不是某一个类的实例。
1 var s1 = new String("Hello");
2 var s2 = "Hi";
3 alert(s1 instanceof String);
4 alert(s2 instanceof String);
输出:
true
false
delete运算符
可以删除定义的属性或方法