3.4 数据类型(JavaScript高级程序设计 第3版)

3.4.1  typeof 操作符

返回下列字符串:

① "undefined" —— 如果这个值未定义

② "boolean" —— 如果这个值是布尔值

③ "string" —— 如果这个只是字符串

④ "number" —— 如果这个值是数值

⑤ "object" —— 如果这个值是对象或null

⑥ "function" —— 如果这个值是函数

3.4.2  Undefined类型

Undefined类型只有一个值,即特殊的undefined;

变量未初始化   和   变量未声明    两种情况下都会返回undefined值

3.4.3  Null类型

Null类型只有一个值,即特殊的null;null值表示一个空对象指针。

var car = null;
alert(typeof car);  // "object"

如果定义的变量准备用来保存对象,最好初始化为null,这样只要直接检测null值就可以知道是否已经保存了一个对象的引用,如下:

if(car!=null){
    //对car对象执行操作;
}

3.4.4  Boolean类型

有true和false两个字面值;

Boolean()函数可以将任何数据类型的值转换成Boolean值;

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 " "(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined / undefined

3.4.5  Number类型

① 浮点数值

浮点数值就是数字后面必须包含小数点,并且小数点后面必须至少包含一个数字;

var floatNum1 = 1.1; 
var floatNum2 = 0.1;
var floatNum3 = .1;   //有效,但不推荐

//from page28

小数点后为0,或者没有数字,直接转换成整数;

科学计数法:

var flaotNum = 3.125e7;  //等于31250000,相当于3.125*10的7次方

永远不要测试某个特定的浮点值,如下;

var a = 0.1;
var b = 0.2
alert(a+b==0.3);    //flase
alert(a+b);         //0.30000000000000004


var c = 0.15;
var d = 0.15;
alert(c+d==0.3);   //true


//from page28

这是由于浮点数值的精确度不高所导致的,而整数进行计算时精确度远远高于浮点数值;

② 数值范围

最小数值保存在Number.MIN_VALUE中——大多数浏览器的值是5e-324;

最大数值保存在Number.MAX_VALUE中——大多数浏览器的值是1.7976931348623157e+308;

isFinite()函数可以检测一个数值在不在最大和最小之间;

③ NaN

NaN 即非数值(Not a Number)是一个特殊的数值。NaN与任何值都不相等,包括NaN本身。

alert(NaN == NaN);   //false

isNaN()函数用来判断是否“不是数值”,isNaN()接收到值后,如果不是数值他会尝试将这个值转换成数值,如下,

alert(isNaN(NaN));      //true
alert(isNaN(10));       //false
alert(isNaN("10"));     //false(转换成了10)
alert(isNaN("blue"));   //true(无法转换)
alert(isNaN(true));     //false(转换成了1)

//from page29

④数值转换

a:Number()函数(少用)

      如果是布尔值返回0或1;

      如果是数值,只做简单传入和返回;

      如果是null值,返回0;

      如果是undefined,返回NaN;

      如果是字符串,如果只包含数字,将转换成十进制的数值,前导0会忽略(011会变成11),如果包含有效浮点格式,会返回对应的浮点数值(01.1返回1.1),如果字符串是空则返回0,除以上情况返回NaN;

      如果是对象,则调用valueOf()方法,如果结果是NaN,则调用toString()方法;

b:parseInt()函数

var num1 = parseInt("1234blue");   //1234
var num2 = parseInt("");           //NaN
var num3 = parseInt(22.5);         //22
var num4 = parseInt("70");         //70

//from page31

c:parseFloat()函数

var num1 = parseFloat("1234blue");   //1234
var num2 = parseFloat("22.5");       //22.5
var num3 = parseFloat("22.34.5");    //22.34
var num4 = parseFloat("0908.5");     //908.5

//from page32

3.4.6  String类型

1.字符字面量

String类型包含一些特殊的字符字面量,叫转义序列;

字面量 \n \t \b \r \f \\ \' \"
含义 换行 制表 退格 回车 进纸 斜杠 单引号(') 双引号(")

length属性,可以得到字符串的长度;

var text = "hello world;"
alert(text.length);     //12

//from page 33

2.字符串特点

字符串一旦创建,他们的值就不能改变。要改变要先销毁原来的字符串,再用另一个包含新值的字符串填充该变量。

3.转换为字符串

① toString()方法

数值、布尔值、对象、字符串都有 toString()方法,但是null和undefined没有。

var age = 11;
var ageAsString = age.toString();    //字符串“11”

//from page 34

② String()方法

这个函数可以将任何类型的值转换成字符串,包括null和undefined。

a:如果值有toString()方法,则调用该方法并返回结果;

b:如果值是null,则返回"null";

c:如果值是undefined,则返回"undefined"。

3.4.7  Object类型

ECMAScript中的对象其实就是一组数据和功能的集合,对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。

var o = new Object();
//var o = new Object;   //有效,但不推荐

//from page35

Object每个实例都有下面的属性和方法:

a:constructor:保存着用于创建当前对象的函数。对上面的例子,构造函数(constructor)就是Object();

b:hasOwnProperty(propertyName):检测给定的属性在当前对象实例中(而不是实例的原型中)是否存在;其中参数propertyName必须是字符形式传参;

c:isPrototypeOf(object):用于检测传入的对象是否是当前对象的原型;

d:propertyIsEnumerable(proertyName):检测给定的属性是否能用for-in语句枚举,其中参数propertyName必须是字符形式传参;

e:toLocaleString():返回对象的字符串表示,与执行环境的地区对应;

f:toString():返回对象的字符串表示;

g:valueOf():返回对象的字符串、数值、布尔值表示。

猜你喜欢

转载自blog.csdn.net/weixin_39752673/article/details/81166831