美文网首页
js数据类型

js数据类型

作者: 半瓶不满 | 来源:发表于2018-06-15 17:35 被阅读0次

    基本类型

    js中有六种数据类型,包括五种基本数据类型(Undefined、Null、Boolean、Number和String)

    • typeof 操作符

    由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.

    typeof 123   //Number
    typeof 'abc'  //String
    typeof true    //Boolean
    typeof undefined    //Undefined
    typeof null    //Object
    typeof { }    //Object
    typeof [ ]    //Object
    typeof console.log()    //Function

    null类型进行typeof操作符后,结果是object,原因在于,null类型被当做一个空对象引用。

    1.Number类型
    Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。
    NaN:非数字类型。特点:① 涉及到的 任何关于NaN的操作,都会返回NaN ② NaN不等于自身。
    isNaN() 函数用于检查其参数是否是非数字值。
    isNaN(123) //false isNaN("hello") //true

    2.String类型
    字符串有length属性。
    字符串转换:转型函数String(),适用于任何数据类型(null,undefined 转换后为null和undefined);toString()方法(null,defined没有toString()方法)。

    3.Boolean类型
    该类型只有两个值,true和false

    4.Undefined类型
    只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。

    5.Null类型
    null类型被看做空对象指针,前文说到null类型也是空的对象引用。

    6.Object类型(复杂数据类型)
    js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法

    引用类型

    1.Object类型

    我们看到的大多数类型值都是Object类型的实例,创建Object实例的方式有两种。

    第一种是使用new操作符后跟Object构造函数,如下所示

    var person = new Object();
    
    person.name = "Micheal";
    
    person.age = 24;
    

    第二种方式是使用对象字面量表示法,如下所示

    var person = {
    
      name : "Micheal",
    
      age : 24
    
    };
    

    2.Array类型

    数组的每一项可以用来保存任何类型的数据,也就是说,可以用数组的第一个位置来保存字符串,第二个位置保存数值,第三个位置保存对象....另外,数组的大小是可以动态调整的。

    创建数组的基本方式有两种

    第一种是使用Array构造函数,如下所示

    var colors = new Array("red","blue","yellow");
    

    第二种是使用数组字面量表示法,如下所示

    var colors = ["red","blue","yellow"];
    

    3 Function类型

    每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。函数通常是使用函数声明语法定义的,如下所示

    function sum(num1,num2){
    
      return num1 + num2;
    
    };
    

    这和使用函数表达式定义函数的方式相差无几。

    var sun = function (){
    
      return sum1 + sum2;
    
    };
    

    ES6新增数据类型Symbol

    Symbol的值有两种。一种是原来的属性名。一种是有Symbol()生成的属性名,由于其表示独一无二,所以该属性名不会冲突。

    使用Symbol时注意:Symbol函数前不能用new操作符(Symbol是一个原始数据类型,不是对象);不能为Symbol添加方法;symbol是类字符串形式的基本数据类型;symbol可以转化为字符串(两种方式,前面已经介绍了。),可以转换为boolean,但是不能转化为Number。

    使用Symbol()时最好为其传入参数,不传入参数时,使用typeof 时都是返回'symbol',加入参数时就会返回'symbol(参数)',容易区分;由于symbol的值是独一无二的,即使是传入相同的参数,二者的值也是不等的。

    由于Symbol的值是独一无二的,所以可以作为属性名存在,但是作为属性名是,不能进行点(.)操作,所有的Symbol值都放在方括号([])中。

    前面介绍Symbol 的值是独一无二的,即使是传入相同的参数,二者的值也是不同的,如果想让两者相等,可以使用Symbol.for();

    let s1 = Symbol.for('abc');  
    let s2 = Symbol.for('abc');  
    alert(s1 === s2) //true  
    

    对属性进行遍历是要注意:

    Symbol 作为属性名,该属性不会出现在for...in、for...of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()返回。

    
      
    Object.getOwnPropertySymbols方法返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值。  
      
    const obj = {};  
    let a = Symbol('a');  
    let b = Symbol('b');  
      
    obj[a] = 'Hello';  
    obj[b] = 'ES6';  
      
    const objectSymbols = Object.getOwnPropertySymbols(obj);  
      
    objectSymbols  
    // [Symbol(a), Symbol(b)]  
    

    相关文章

      网友评论

          本文标题:js数据类型

          本文链接:https://www.haomeiwen.com/subject/fhbmeftx.html