美文网首页
Symbol 强制类型转换

Symbol 强制类型转换

作者: 弹指一挥间_e5a3 | 来源:发表于2020-12-29 09:51 被阅读0次

    '类型转换'是'JS'语言重要的一部分,能够非常灵活地将一种'数据类型'转换为另一种。然而'Symbol类型'在进行转换时非常不灵活,因为其他类型缺乏与 Symbol 值的合理等价,尤其是 Symbol 无法被转换为字符串值或数值'。

    String()转换

    虽然说上面说不可以转换,其实只能转换成 Symbol(uid) 这种形式,想取到'描述内容'需要手动截取'描述内容'

    let uid = Symbol.for("uid"), // 创建全局私有属性
        test = Symbol('呵呵哒'), // 创建局部私有属性
        desc = String(uid), // 转换成字符串
        testString = String(test) // 转换成字符串
    
    
    console.log(desc)    // "Symbol(uid)"
    console.log(testString)    // "Symbol(呵呵哒)"
    

    强制类型转换

    uid 与空字符串相连接,会首先要求把 uid 转换为一个字符串,而这会引发错误,从而阻止了转换行为。

    let uid = Symbol.for("uid"),
        desc = uid + ""; // 引发错误!
    

    相似地,你不能将 Symbol 转换为数值,对 Symbol 使用所有数学运算符都会引发错误,例如:

    let uid = Symbol.for("uid"),
        sum = uid / 1; // 引发错误!
    

    此例试图把 Symbol 除以 1 ,同样引发了错误。无论对 Symbol 使用哪种数学运算符都会导致错误,但使用

    逻辑运算符则不会,因为 Symbol逻辑运算中会被认为等价于 true(就像 JS 中其他的非空值那样)。

    相关文章

      网友评论

          本文标题:Symbol 强制类型转换

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