数据类型

1 Undefined类型

Undefined类型只有一个值:undefined。用var声明但未初始化的变量就是undefined。

2 Null类型

Null类型只有一个值:null。null表示一个空对象指针,typeof操作检测null值时返回object。

undefined和null之间的相等性检测返回true,即:

alert(null == undefined); //true

没有必要把一个变量显式设为undefined,但意在保存对象的变量没有真正保存对象,就应让变量明确保存为null。

3 Boolean类型

该类型有两个字面值:true和false

可调用Boolean()函数将一个值转换为对应的Boolean值。

4 数值类型

4.1 整数
  • 数值字面量格式的十进制
  • 以0开头的八进制字面值,如070(八进制56)
  • 以0x开头的十六进制,如0xA  //十六进制的10
4.2 浮点数

浮点数计算会产生舍入误差,会导致无法测试特定的浮点数值。例如:

if (a + b == 0.3) {              //不要做这样的测试,因为0.1+0.2 != 0.3, 而是等于0.30000000000000004
    alert("You got 0.3");
}        

 

4.3 数值范围

最大值:Number.MIAX_VALUE,超出这个范围被自动转为Infinity值。

最小值:Number.MIN_VALUE

 确定一个数是不是有穷可以使用isFinity()函数。

4.4 NaN

NaN(Not a Number)是个特殊的值,用于表示一个应返回数值的操作数未返回数值的情况(这样不会抛出错误)

NaN有两个非同寻常的特点:

  1. 任何涉及NaN的操作都会返回NaN
  2. NaN与任何值都不相等,包括NaN本身

 可用isNaN(para)函数确定一个值是否“不是数值”。

4.5 数值转换

三个转换函数:Number(), parseInt(), parseFloat()

Number()转换规则:

  1. Boolean值,true返回1, false返回0;
  2. 数字值,简单传入传出;
  3. null,返回0;
  4. undefuned,返回NaN;
  5. 字符串遵循以下规则:
    • 只包含数字转换为十进制数值(忽略前导零);
    • 只包含有效的浮点格式,转换为对应的浮点数值;
    • 只包含有效的十六进制格式,转换为对应的浮点数值;
    • 空字符串,转换为0;
    • 包含上述格式以外的字符串,转换为NaN。

  6.如果是对象,调用对象的valueOf()方法,再依照上述规则转换返回值。转换结果为NaN,则调用toString(),在依照前面的规则转换返回的字符串。

 

parseInt()转换规则:

  1. 忽略字符串的空格,直到找到第一个非空格字符串。若第一个字符不是数字字符或负号,返回NaN;
  2. 第一个非空字符为数字,则会解释后续字符直至遇到非数字字符,如123blue会转换为123,22.5被转换为22,因为"."不是数字字符。

可以为parseInt()提供第二个参数来指定转换时使用的基数(即多少进制),如:

var num1 = parseInt("0xAF", 16);          //175
var num2 = parseInt("AF", 16);             //175
var num3 = parseInt("AF");       //NaN  
var num4 = parseInt("10", 2);              //2
var num5 = parseInt("10", 8);              //8
var num6 = parseInt("10", 10);            //10
var num7 = parseInt("10", 16); //16

 

 parseFloat()的转换规则与parseInt()类似,其会始终忽略前导零。

5 String类型

length属性来获取字符串的长度:

var str = "Hello World";
alert(str.length);                     //输出11

 字符串的特点:

  字符串一旦创建就无法改变。若要改变某个变量保存的字符串,要先销毁原来的字符串,再用包含新值的字符填充该变量。

var lang = "Java";
lang = lang + "Script";        //重新定义lang,创建一个容纳10个字符的新字符串,再用“Java” 和“Script”填充,最后销毁原来的“Java”和“Script”

转换为字符串:

  把一个值转换为字符串的两种方法:toString()String()

null和undefined没用toString()方法,只能用String()方法。

String()函数遵循以下转换规则:

  • 如果值有toString()方法,则调用该方法;
  • 如果值是null,则返回null;
  • 如果值是undefined,则返回undefined。

6 Object类型

ECMAScript中的对象就是一组数据和功能的集合。通过“new+对象类型名称” 的方式来创建对象,如:

var o = new Object();

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

  • Constructor:保存着创建当前对象的函数,即构造函数;
  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在,(property)必须以字符串的形式指定;
  • _sPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型。
  • propertyIsEnumerable(propertyName):用于检查给定的属性能否使用for-in语句来枚举;
  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应;
  • toString():返回对象的字符串表示;
  • valueOf():返回对象的字符串、数值、布尔值表示。

 

posted @ 2017-08-13 14:48  chen_zed  阅读(94)  评论(0)    收藏  举报