JavaScript 数据类型介绍

基本数据类型:StringNumberBooleanUndefinedNull
 
引用类型: object

 
1. typeof 用来检测给定变量的数据类型,typeof 是一个操作符而不是函数。
  • 'string':这个值是字符串
  • 'number':这个值是数值
  • 'boolean':这个值是布尔值
  • 'undefined':这个值未定义
  • 'function':这个值是函数
  • 'object':这个值是对象或者 null(是一个空的对象引用)
console.log(typeof '123');                // "string"
console.log(typeof 123);                 // "number"
console.log(typeof true);                // "boolean"
console.log(typeof undefined);           // "undefined"
console.log(typeof function a(){});      // "function"
console.log(typeof null);                // "object"
console.log(typeof {a:1});               // "object"
console.log(typeof new Date());          // "object"
console.log(typeof new RegExp());        // "object"

 

2. Undefined 类型
在使用 var 声明变量但未对其初始化时,这个变量返回 undefined。
包含 undefined 值的变量与尚未定义的变量还是不一样的。调用未声明的变量会报错。
对未初始化的变量执行 typeof 操作符 与 对未声明的变量执行 typeof 操作符都会返回undefined。
var a ;                    // 声明未初始化
// b                           未声明
console.log(typeof a);             //  "undefined"
console.log(typeof b);        // "undefined"
 
3. Null 类型
null 值表示一个空对象指针,这也正是使用 typeof 操作符检测 null 值时返回 "object"的原因。
如果定义的变量准备在将来用于保存对象,那么最好初始化为 null 而不是其他指。
undefined 值是派生自 null 值的,所以null 和 undefined 之间的相等操作符(==)总是返回true。
var car = null;
console.log(typeof car);           // "object"
console.log(null == undefined);        // true
console.log(null === undefined);      // false
 
4. Boolean 类型
该类型只有两个字面值:true 和 false。
虽然 Boolean 类型的字面值只有两个,但是ECMAScript 中的所有类型的值都有这两个 Boolean 值等价的值。
下表给出了各种数据类型及其对应的转换规则:
 
数据类型 转为 true 的值 转为 false 的值
String 任何非空字符串 " "(空字符串)
Boolean true false
Number 任何非零数字值(包括无穷大) 0 和 NaN
Object 任何对象 null
Undefined N/A undefined
 
5. Number 类型
  整数可以用 八进制、十进制、十六进制的字面值来表示,默认为十进制。
 
  八进制:第一位必须是零(0),然后是八进制数字序列(0~7),如果字面值中的数值超出了范围,那么忽略前导零,后面的数值将被当做十进制解析。
070              // 56
079             // 79
08            // 8

 

  十六进制:前两位必须为 0x, 后面是任何十六进制数字(0~9 及 A~F),其中,字母可以大写也可以小写。
0xA        // 10
0xa       // 10
0x1f      // 31
  注:在进行算术计算时,所有以八进制和十六进制表示的数值最终都将转换成十进制数值。
  • 浮点数值
0.1            // 0.1
.1              // 0.1
1.              // 1
10.00           // 10
3.14e4          // 31400
0.1+0.2       // 0.30000000000000004
0.15+0.15     // 0.3
0.05+0.25     // 0.3
  • 数值范围
Number.MIN_VALUE     // 5e-324
Number.MAX_VALUE     // 1.7976931348623157e+308

 

如果一个超出 JavaScript 数值范围的值,将自动转换成特殊的 Infinity 值,负数被转换为 -Infinity(负无穷),正数被转换为 Infinity(正无穷)。
可以使用 isFinite() 函数检测 参数是否位于最小和最大数值之间。
  • NaN
NaN,即非数值(Not a number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
任何涉及 NaN 的操作都会返回 NaN。
NaN 与 任何值都不相等,包括 NaN 本身。
使用 isNaN() 函数来检测 这个参数是否“不是数值”。
isNaN(NaN)            // true
isNaN(10)             // false
isNaN("10")           // false
isNaN("blue")          // true
isNaN("true")          // true
isNaN(true)          // false
注:isNaN("10") 可以被转换成数值 10
 
6. String 类型
String 类型用于表示由零或者多个 16 位 Unicode 字符组成的字符序列,即字符串。字符串可以由双引号(")或者单引号(')表示。
任何字符串都有 length 属性。
toString() 方法 把一个值转换为一个字符串,数值、布尔值、对象和字符串值都有 toString() 方法,但 null 和 undefined 值没有这个方法(会报错)。
:Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式和基模式。
基模式可以用不同的基输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16。
var age = 11;
console.log(age.toString());          // 输出"11"
var found = true;
console.log(found.toString());        // 输出"true"
var num1 = 10;
console.log(num1.toString());         // 输出 "10"
var num2 = 10.0;
console.log(num2.toString());         // 输出 "10"
var myObject = {a:1};
console.log(myObject.toString());     // 输出 "[object Object]"

var iNum = 10;
console.log(iNum.toString());         // 输出 "10"
console.log(iNum.toString(2));        // 输出 "1010"
console.log(iNum.toString(8));        // 输出 "12"
console.log(iNum.toString(16));       // 输出 "A"
在不知道要转换的是不是 null 或者 undefined 情况下, 可以调用 String(),这个函数可以将任何类型的值转换为字符串。
  • 如果值有 toString() 方法,调用该方法(没有参数)返回相应的结果。
  • 如果值是 null ,则返回 "null"。
  • 如果值是 undefined,则返回 "undefined"。

7. Object 类型

  除过 Function 之外,通过 typeof 检测其数据类型返回的都是 object。
 
  创建 object 的两种方式:
  • new 操作符后跟 Object 构造函数
var o = new Object();
o.name = "aa";
o.age = 22;
  • 使用对象字面量表达式
var o = {
  name: "aa",
  age: 22
}
注: Object 属性与方法稍后单独详细介绍。
 

 

 
posted @ 2017-06-26 18:02  娇小优  阅读(238)  评论(0编辑  收藏  举报