数据类型

ECMAScript

5种基本数据类型:

  • Undefined

Undefined类型只有一个值,即特殊的undefined。
在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined,例如:

var t1,
    t2 = undefined;
// 未声明t3变量

typeof t1 == 'undefined';   // true
typeof t2 == 'undefined';   // true
typeof t3 == 'undefined';   // true

t1   // "undefined"
t2   // "undefined"
t3   // ReferenceError: t3 is not defined
  • Null

Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值时会返回"object"的原因,如下面的例子所示:

var t1 = null;

typeof t1 == 'object';  // true

null == undefined;      // true

  • Boolean

Boolean类型是ECMAScript中使用得最多的一种类型,该类型只有两个字面值:true和false。
这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。

var t1 = 'hello world!';

Boolean(t1);  // true
Boolean()方法
数据类型结果true

结果false

Boolean

true

false

String

非空字符串

""

Number

非零字符串(包括无穷大)

0和NaN

Object

任何对象

null

Undefined

n/a

undefined

  • Number
整数
var n1 = 12,   // 整数 12
    n2 = 012,  // 八进制 10
    n3 = 019,  // 无效的八进制 19
    n4 = 0xa;  // 十六进制 10

浮点数

不要用浮点数进行算术计算。

var n1 = 0.1,    // 0.1
    n2 = .1,     // 0.1
    n3 = 1.,     // 1
    n4 = 1.0,    // 1
    n5 = 3.12e7; // 31200000

0.1 + 0.2 == 0.3;    // false 0.30000000000000004

数值范围
判断是否在 Infinity 正无穷到 -Infinity 负无穷之间。

var n1 = Number.MAX_VALUE + Number.MAX_VALUE;

isFinite(n1);             // false
Number.POSITIVE_INFINITY  // Infinity
Number.NEGATIVE_INFINITY  // -Infinity
NaN
任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。
NaN与任何值都不相等,包括NaN本身。
isNaN(NaN)    // true
isNaN(10)     // false 数值10
isNaN('10')   // false 可转换为数值10
isNaN('blue') // true 不可转被换为数值
isNaN(true)   // false 可转被换为数值

数值转换

/* Number()
 * 可用于任何数据类型
 * 转换字符串时,忽略前后空格,包含非数值字符或空格则为NaN
 */
Number(true)           // 1
Number(false)          // 0
Number(123)            // 123
Number(null)           // 0
Number(undefined)      // NaN
Number(NaN)            // NaN
Number('-123')         // -123
Number('+123')         // 123
Number('00123')        // 123
Number('01.23')        // 1.23
Number('0xa')          // 10
Number('')             // 0
Number(' 123')         // 123
Number('123 ')         // 123
Number('12 3')         // NaN
Number('123b')         // NaN
Number('b123')         // NaN
Number('hello world!') // NaN

/* parseInt() */
parseInt('123b ')    // 123
parseInt(' 123b')    // 123
parseInt('b123')     // NaN
parseInt('1 23b')    // 1
parseInt('')         // NaN
parseInt('0xa')      // 10
parseInt('12.3')     // 12
parseInt('070')      // 70
parseInt('70')       // 70

parseInt('10', 2)    // 2
parseInt('10', 8)    // 8
parseInt('10', 10)   // 10
parseInt('10', 16)   // 16

/* parseFloat()
 * parseFloat()只解析十进制值,因此它没有用第二个参数指定基数的用法。
 * 如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后都是零),会返回整数。
 */
parseFloat("1234blue")  // 1234(整数)
parseFloat("0xA")       // 0
parseFloat("22.5")      //22.5
parseFloat("22.34.5")   //22.34
parseFloat("0908.5")    //908.5
parseFloat("3.125e7")   //31250000

  • String

转义字符

字面量含义
\n换行
\t制表
\b退格
\r回车
\f进纸
\\斜杠
\'单引号
\"双引号
\xnn十六进制代码,如 \x41 表示 "A"
\unnnn十六进制代码,标识一个Unicode字符,如 \u03a3 表示希腊字符Σ

字符串的特点

字符串的长度不可改变,当字符串发生变化,将销毁原来的字符串,重新生成新的字符串替换。

装换为字符串

var n1 = 10,
    n2 = true,
    n3 = null,
    n4;

// toString(),Null和Undefined没有toString()方法。
n1.toString()   // 10
n1.toString(2)  // 1010
n1.toString(8)  // 12
n1.toString(10) // 10
n1.toString(16) // a

// String()方法除Null和Undefined方法外,和toString()的默认方法一致。
String(n1)  // 10
String(n2)  // true
String(n3)  // null
String(n4)  // undefined

1种复杂数据类型:

  • Object

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

  1. Constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是Object()。
  2. hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty("name"))。
  3. isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型(第5章将讨论原型)。
  4. propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句(本章后面将会讨论)来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
  5. toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
  6. toString():返回对象的字符串表示。
  7. valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。


检测数据类型:

var t1,
    t2 = 'str',
    t3 = true,
    t4 = 123,
    t5 = function(){},
    t6 = null,
    t7 = {name: 'cat'};

typeof t1 == 'undefined';  // true
typeof t2 == 'string';     // true
typeof t3 == 'boolean';    // true
typeof t4 == 'number';     // true
typeof t5 == 'function';   // true
typeof t6 == 'object';     // true
typeof t7 == 'object';     // true



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值