JavaScript - 数据类型

2018-12-18  本文已影响0人  婆娘漂亮生活安逸

本内容的介绍主要参考了《JavaScript高级程序设计》

1. typeof 操作符

* 用法:
   ```
    var book = '';
    typeof book;
    typeof(book);
    // typeof 是一个操作符,不是一个函数,因此圆括号不是必需的。
    ```
 * 返回值:
    只会返回以下列举的某个字符串:
    'undefined', 'boolean', 'string', 'number', 'object', 'function'。

2. Undefined 数据类型

 该类型只有一个值,为特殊的 undefined。无需特意设置变量为 undefined。
  ```
   var book;
   console.log(type of book);
   // 打印值:undefined
   ```

3. Null 类型

该类型的值只有一个,为特殊的 null。表示一个空对象指针。
 ```
  var book = null;
  console.log(type of book);
  // 打印值:null
  ```

虽然 null 与 undefined 的 相等操作符(==)返回 true,但是两者不为相同。undefined 无需特意为变量设置该值;但是如果变量确定为对象类型则明确让该变量保存为 null 值。

4. Boolean类型

该类型只有两个字面值:true 和 false。(该值区分大小写,意味着任何大小写混合形式的该值,都不是 Boolean 值。)
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ''(空字符串)
Number 任何非0数值(-∞,负数,正数,+∞) 0和NaN
Obejct 任何对象 null
Undefined undefined

5. Number类型

// 十进制
55
// 八进制:第一位必须是零(0),后面是八进制数字序列(0~7)。超出,直接当作十进制数值解析;
070   => 35
079   => 79
// 十六进制:第一位必须是 0x,后面是十六进制数字序列(0~9A~F),字母不区分大小写。
0xaa => 170
0x1F => 31
// 实际运算时,均转为十进制。
// 包含小数点,小数点前后至少一位数字
1.1
// 省略小数点前面的整数,不推荐
.1
//  省略小数点后面的整数,转换为整数
1. => 1
// 小数点后面为0
10.0 => 10
Number()转换规则:
// 如果是Boolean值,true 和 false 转换为 1和 0
    var num1 = Number(true);   // 1
// 如果是数字值,则进行简单的传入和返回
    var num2 = Number(5);   // 5
// 如果是null值,则返回 0
    var num3 = Number(null);    //0
// 如果是undefined,则返回NaN
    var num4 = Number(undefined);   // NaN
// 如果是字符串,情况分为多类:
    let stringNumber = '123';   // 只包含数字,转换为十进制数值,忽视前导的0
    let stringFloat = '1.35';       //  只包含有效的浮点数,转换为对应的浮点数值,忽略前导的0
    let stringXF = '0xf';            // 有效的十六进制,转换为对应的十进制整数值
    let stringEmpty = '';           // 空字符串,转换为0
    let stringOther = 'dd23';   // 其他格式,转换为NaN
// 如果是对象,调用对象的 valueOf() 方法,再根据规则转换,如果结果为NaN,则调用对象的 toString() 方法,再根据规则转换
parseInt() 转换规则:
// 数字开头的任意字符串,默认将前面可识别部分转为整数
var num1 = parseInt('1234abcd5678');   // 1234
var num2 = parseInt('') // NaN
var num3= parseInt('22.5') // 22
// 识别整数格式:十进制、八进制、十六进制
var num4 = parseInt('10') // 10
var num5 = parseInt('010') // 8
var num6 = parseInt('0x10') // 16
// 在ES3 引擎中,‘070’被当作八进制字面量,解析为十进制的56;在ES5引擎中,会忽略前导‘0’,解析为70
// 由此,parseInt 会提供第二个参数,指定解析的值为多少进制,并且可以不带整数格式的前缀;
var num4 = parseInt('10', 10) // 10
var num5 = parseInt('10',8) // 8
var num6 = parseInt('10',16) // 16
parseFloat() 转换规则:
// 数字开头的任意字符串,可以解析小数点,默认忽略前导0;
var num1 = parseFloat('.1234') // 0.1234
var num2 = parseFloat('012.34') // 12.34
// 只解析十进制,无法解析十六进制和八进制等,也没有第二个参数;
 var num3 = parseFloat('0x10') // 0
var num4 = parseFloat('010') // 10

6. String 类型

表示由 零 或 多个16位Unicode字符组成的字符序列,即字符串。可以由单引号(")或者双引号(')表示。

字面量 含义
\n 换行
\t 制表
\b 空格
\r 回车
\f 进纸
\\ 斜杠
\' 单引号,例如:'Hello, it\'s me'
\" 双引号,例如:"\"你好,是我\""
toString() 方法:
// 数值、布尔值、对象和字符串值,直接返回字符串副本,null和undefined没有该方法;
let val1 = 10, // '10'
let val2 = true, //'true'
let val3 = {}, // '[object object]'
let val4 = 'Hello', // 'Hello'
val.toString();
// 通常,toString() 方法不用传参。如果在数值调用时,可以传基数,则输出有效进制的字符串值,传入基数不正确时报错
var num = 10;
num.toString(); //10
num.toString(2) //1010
num.toString(8) //12
String() 方法:
// 如果值有该方法,返回相应字符串;
// 如果是null,则返回 'null';
// 如果是undefined,则返回'undefined';

7. Object 类型

定义:ECMAScript 中的对象其实就是一组数据和功能的集合。
Obejct 类型具有的任何属性和方法同样存在于实例当中;

属性 方法
constructor 保存着用于创建当前对象的函数
hasOwnProperty(propertyName) 用于检查给定的属性在当前对象实例中是否存在(不是在实例的原型中)
isPrototypeOf(object) 用于检查传入的对象是否是传入对象的原型
propertyIsEnumerable(propertyName) 用于检查给定的属性是否能够使用for-in语句来枚举。
toLocaleString() 返回对象的字符串表示,与执行环境的地区对应
toString() 返回对象的字符串表示
valueOf() 返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同
上一篇 下一篇

猜你喜欢

热点阅读