ECMAScript中,变量可以存放两种类型(简单数据类型和引用类型)的值,即原始值和引用值。
原始值是存储在栈中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。引用值是存储在堆中的对象,也就是说,存储在变量处的值是一个指针,指向存储对象的内存处。如果一个值是引用类型,那么它的存储空间将从堆中分配。
如图。
一、ECMAScript中有五种简单数据类型:Undefined、Null、Boolean、Number、String。
用typeof操作符来检测变量的数据类型。
console.log(typeof object);// 类型返回的字符串是undefined
<script type="text/javascript">
var box;
console.log(typeof box);//box是Undefined类型,值是undefined,类型返回的字符串是undefined
var box = true;
console.log(typeof box);//box是Boolean类型,值是true,类型返回的字符串是boolean
var box = "Jack";
console.log(typeof box);//box是String类型,值是Jack,类型返回的字符串是string
var box = 12;
console.log(typeof box);//box是Number类型,值是12,类型返回的字符串是number
var box = {};//空的对象,表示这个对象已创建,但里面没有东西
console.log(box);//box是Object类型,值是{},类型返回的字符串是object
var box = null;//空对象,表示这个对象没有创建
console.log(box);//box是Null类型,值是null,类型返回的字符串是object
var box = function(){};
console.log(typeof box);//box是Function函数,值是function(){},类型返回的字符串是function
</script>
1.undefined类型当使用var声明变量,但没有对其初始化时,这个变量的值就是undefined2.null类型只有一个专用值null,它表示一个空对象的引用(即指针)。typeof检测null会返回object。3.boolean类型字面量上有两个值:true和false,但ECMAScript中所有类型的值都有与这两个Boolean值等价的值。
4.number类型有两种数值:整型和浮点型。有3个函数可以把非数值转换成数值:Number()、parseInt()、parseFloat().Number()可以用于任何数据类型,后面两个专门用于把字符串转换成数值。5.string类型toString()方法可以把值转换成字符串。注:number类型的toString()方法转成字符串时,可以传递进制参数。eg:var box=10; alert(box.toString(8)); / /12八进制输出ECMAScript中可使用强制类型转换处理转换值的类型。有三种:Boolean()、Number()、String().用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。使用String()和toString()方法的唯一不同之处在于,对null和undefined值强制类型转换可以生成字符串而不引发错误。
二、引用类型有boolean、number、string、object用instanceof操作符来检测引用值的数据类型。1.boolean对象和number对象:不常用。
补一个boolean对象的题:
var x = new Boolean(false);if (x) { alert('hi');}var y = Boolean(0);if (y) { alert('hello'); }的显示结果是? / / hi
解析:当一个值为false的Boolean对象放到条件语句当中的时候,Boolean对象的值会被当作 true来计算,但是它本身的值并没有改变。这里x为Boolen对象,在if语句里的判断为true,虽然x的值为false。y为Boolen值,在if里的判断就是false值。
2.string对象string对象的所有属性和方法都可应用于string原始值上,因为它们是伪对象。包括3个属性和大量的可用内置方法。属性:length、constructor、prototype常用方法:1.字符方法:charAt(n):返回指定索引位置的字符charCodeAt(n):以Unicode编码形式返回指定索引位置的字符2.字符串位置方法:indexOf(str,n):从n开始搜索的第一个str,并将搜索的索引值返回lastIndexOf(str,n):从n开始搜索的最后一个str,并将搜索的索引值返回3.字符串操作方法:注:3个方法都不改变string对象自身的值。4.字符串的模式匹配方法
null和undefined的区别
null是一个表示"无"的对象,代表没有赋值的引用数据类型,转为数值时为0;
undefined是一个表示"无"的原始值,代表没有赋值的基本数据类型,转为数值时为NaN。undefined:(1)变量:
变量被声明但没赋值时,就等于undefined。(2) 函数:
调用函数时,应该提供的参数没有提供,该参数等于undefined;
函数没有返回值时,默认返回undefined。 (3)对象:
对象没有赋值的属性,该属性的值为undefined。null:(1)函数:作为函数的参数,表示该函数的参数不是对象。(2)对象:
作为对象原型链的终点。
把对象的引用设置为null,可以强制性的废除对象。