ES6-数据类型

javascript数据类型

Undefined、Null、Number、String、Boolean、Symbol、Object、 Function(object)等

  • JavaScript 中有以下几种数据类型:

    基本数据类型

    • Number(ES5): typeof()返回"number"。用于任何类型的数字:整数或者浮点数。
    • String(ES5): typeof()返回"string"。用于字符串。一个字符串可以包含一个或多个字符,所以没有单独的单字符类型。
    • Boolean(ES5): typeof()返回"boolean"。用于 true 和 false。
    • Null(ES5): typeof()返回"object"。用于未知的值 —— 只有一个 null 值的独立类型。
    • Undefined(ES5): typeof()返回"undefined"。用于未定义的值 —— 只有一个 undefined 值的独立类型。
    • Symbol(ES6): typeof()返回"symbol"。用于唯一的标识符。

    引用数据类型

    • Object(ES5): typeof()返回"object"。用于更复杂的数据结构。
    • *Function(ES5): typeof()返回"function",属于object。
  • 基本数据类型和引用数据类型访问

    • 基本类型值:存在栈中,按值访问,操作的是他们实际保存的值;
    • 引用类型值:栈中保存地址,堆中保存值,按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再顺藤摸瓜地找到保存在堆内存中的值;
  • 基本数据类型和引用数据类型复制

    • 基本类型变量的传递(复制):(互不干涉
      从一个变量向一个变量复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上,改变源数据不会影响到新的变量;
    • 引用类型变量的传递(浅复制):(铁锁连横
      复制的是存储在栈中的指针,将指针复制到栈中未新变量分配的空间中,而这个指针副本和原指针执行存储在堆中的同一个对象,复制操作结束后,两个变量实际上将引用同一个对象;因此改变其中的一个,将影响另一个;
  • typeof 运算符可以查看变量的类型:

    • 两种形式:typeof x 或者 typeof(x)。
    • 返回的类型的字符串,比如 "string"。
    • null 返回 "object" —— 这是语言中的一个错误,实际上它并不是一个对象
    • Symbol 返回"function"
    • 一般object建议用instanceof来判断类型

    typeof用于判断基本类型,instanceof 用于判断对象类型。

  • 类型转换

    • 转换为 number 类型

      转换
      undefined NaN
      null 0
      true 和 false 1 and 0
      string 字符串开始和末尾的空白会被移除,剩下的如果是空字符串,结果为 0,否则 —— 从字符串中读出数字。错误返回 NaN。
      • 使用Number()显示转换
        let str = '123';
        alert(str); // string
        let num = Number(str);
        alert(typeof num); // number
        
      • 使用算术操作符+
        let str = '123';
        alert(str); // string
        let num = +str;
        alert(typeof num); // number
        alert(str + 4); // '1234',字符串拼接
        
      • 使用算术操作符/
        alert('6'/'3'); // 2
        
      • 使用位运算符~~
        alert(typeof ~~'123'); // number
        
    • 转换为 string 类型

      • 显示转换:String()
      • 隐式转化:'hello' + 123
    • 转换为 boolean 类型

      • 假值,比如 0、空的字符串、null、undefined 和 NaN 变成 false。
      • 其他值变成 true。'0',[],' '(空格,属于非空的字符串)----true
      • 操作符:Boolean()
      • 操作符:!!
  • 实例:

"" + 1 + 0; // "10"
"" - 1 + 0; // -1
true + false; // 1
6 / "3"; // 2
"2" * "3"; // 6
4 + 5 + "px"; // "45px"
"$" + 4 + 5; // "$45"
"4" - 2; // 2
"4px" - 2; // NaN
7 / 0; // Infinity
"  -9\n" + 5;
"  -9\n" - 5; // "  -9
                 5"
"-4\t"+6; // "4 6"
null + 1; // 0
undefined + 1; // NaN
!![];   // true
!!''; // false
!!' '; // true

你可能感兴趣的:(ES6-数据类型)