zoukankan      html  css  js  c++  java
  • 七种JS数据类型---Symbol

    七种JS数据类型  
     
    六种基本类型:string、number、boolean、null、undefined、symbol(ES6新增)
     一种引用数据类型:boject、array、function
    // 1、symbol函数前不能使用new关键字,否则会报错,这是因为symbol是原始数据类型,而不是对象,所以不能添加属性。
    let s = Symbol();
    typeof s;
    //"symbol"

    //2、 symbol可以接受一个字符串作为参数,表示对Symbol的描述,主要是在控制台显示时容易区分

    //3、 这个参数可以不加,如果不加在控制台输出就是两个Symbol()不利于区分,加上参数就是为了加以区分。

    var s1 = Symbol("foo");
    var s2 = Symbol("bar");
    
    s1 // Symbol("foo")
    s2 // Symbol("bar")
    s1.toString() // "Symbol(foo)"
    s2.toString() // "Symbol(bar)
     
    //4、 Symbol不能与其他值进行运算,否则会报错
    // 5、Symbol是唯一的与谁都不相等
    // 没有参数的情况
    var s1 = Symbol();
    var s2 = Symbol();
    
    s1 == s2 // false
    
    // 有参数的情况
    var s1 = Symbol("foo");
    var s2 = Symbol("foo");
    
    s1 == s2 // false
    // 6、Symbol 可以显示的转为字符串,布尔值,但是不能转为数字,转为数字会报错
    // 7、由于每一个Symbol都不相同,那么可以作为标识符作为对象的属性名,保证不会出现同名的的属性
    var mySymbol = Symbol();
    
    //第一种写法
    var a = {};
    a[mySymbol] = "Hello!";
    
    //第二种写法
    var a = {
         [mySymbol]: "Hellow!"
    }
    
    //第三种写法
    var a = {};
    Object.defineProperty(a, mySymbol, { value: "Hellow!" });
    
    //以上写法的结果都相同
    
    a[mySymbol] // "Hellow!"
    // 8、Symbol值作为对象的属性名时不能使用点运算符,同理,在对象的内部使用Symbol值时也必须放在方括号中
  • 相关阅读:
    BZOJ4821 SDOI2017相关分析(线段树)
    BZOJ3167/BZOJ4824 HEOI2013SAO/CQOI2017老C的键盘(树形dp)
    BZOJ4820 SDOI2017硬币游戏(概率期望+高斯消元+kmp)
    BZOJ4811 Ynoi2017由乃的OJ(树链剖分+线段树)
    BZOJ4810 Ynoi2017由乃的玉米田(莫队+bitset)
    Codeforces Round #522 Div. 1 没打记
    BZOJ4784 ZJOI2017仙人掌(树形dp+dfs树)
    43. Multiply Strings
    2. Add Two Numbers
    150. Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/zjz666/p/14431797.html
Copyright © 2011-2022 走看看