美文网首页
7中数据类型

7中数据类型

作者: 静_summer | 来源:发表于2019-08-19 19:16 被阅读0次

七个类型:

  • undefined
  • null
  • Boolean
  • String
  • Number
  • Symbol
  • Object

ECMAScript: 由ecma国际定义的js标准,1999年12月,ECMAScript 3.0版发布,成为JavaScript的通行标准,得到了广泛支持。2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015

es3.0 中undefined可以重新赋值,但是在es5中已经屏蔽了这个操作

  • undefined和null的区别:

1.前者可以被重新赋值,但是es5已经作了屏蔽,后者是关键字,不可以重新赋值
!function(window, undefined) {
// 这里的undefined就不会出现赋值的问题
}(window)

  1. undefined in window// true;
    null in window// false

  2. unicode规定一个字符用两个字节表示,一个字节是8位,那么就是 2 ^ 8 * 2 ^ 8 = 65536
    ascii包含128个字符
    utf-8 和utf-16的区别:utf-8 使用1、2、3、4个字节来表示,utf16用2或4个字节来表示

  3. 对比number小数位
    Math.abs(0.1 + 0. 2 0.3) < Number.EPSILON

  4. symbol 的定义和使用

    • 原始数据类型: 独一无二的值
      let s1 = Symbol('s1')
    • 不能做运算:
      Boolean(s) // true
      String(s) // Symbol('s1')
      Number(s) // 报错,不能转数字,所以不能用于任何的 + - * /
      s.toString()// 'Symbol('s1')'
    • !!Symbol() // true
    • 不能new操作符, 是
    • Object.assign(obj, newSymbolKeyObj) // 能够被复制到新对象上

    使用场景

    • 可以作为obj的key值,obj的key值只能是string和symbol

      • 可以作为对象的私有属性: 因为JSON.stringify(obj),Object.keys()、for in、for of不会返回Symbol的key值
      • 获取obj中的symbol()属性:Reflect.ownKeys(obj)、Object.getOwnPropertySymbols(obj)
      • Symbol.for('foo') 和 Symbol.keyFor(s)

      let s = Symbol.for('foo') // 返回Symbol(foo)
      let s = Symbol.keyFor(s) // 返回'foo'
      * 可以定义常量:
      * let RESOVLED = Symbol()

    • 内置的Symbol相关方法

    > Array.prototype[Symbol.iterator] = function() { // 重新定义for of
        let v = 0;
        return {
            next: function () {
                return {value: v++, done: v > 10}
            }
        }
    }
    
    > class objSelf { // 定义了instanceof行为,只有在右边是objSelf的时候才会调用
        static [Symbol.hasInstance] (obj) {
            console.log('Symbol.hasInstance')
            return true
        }
    }
    [] instanceof objSelf
    
    
## 数值运算,类型转换
    ```javascript
 let obj = { // 进行数值运算,对象转原始类型,最高优先级toPrimitive,其次是valueof,其次是tostring
        [Symbol.toPrimitive](hint) {
            if(hint === 'number'){ // 要转成数字
                console.log('Number场景');
                return 123;
            }
            if(hint === 'string'){ // 要转成字符串
                console.log('String场景');
                return 'str';
            }
            if(hint === 'default'){ // 可以转成字符串或者数字
                console.log('Default 场景');
                return 'default';
            }
        },
        valueof () {
            console.log('valueof')
            return false
      },
      toString() {
          console.log('toString')
          return false
      }     
    }
    console.log(obj **2) // number
    console.log(String(2)) // string
    console.log(obj + 2) // default

数据类型转换规则

转成boolean、string、number


image.png
    1. 转成boolean

    undefined、null、0、’‘、NaN、false、0、-0都转为false,其他都是true

    1. 四则运算

    除了加法,只要有number就都转为number
    6 * [2,1] // NaN
    true * [2] // 2

    1. 加法运算符
    1. 一方有string都转为string
    2. boolean和number,转成number
    3. 非number调用toSting()
    
    1. 比较运算符

    对象:通过primitive、valueof、toString转换
    strring: 通过unicode编码大小比较

    1. == 和 ===
      例子:[] == ![] // true
      [] == !{} // true
      {} == !{} // false
      {} == ![] // false


      image.png
    1. a==1 && a==2 && a==3
      相关知识点:
  1. 隐式转换查找顺序是Symbol.isPrimitive、valueof、toString,如果是转换成字符串的隐式类型转换顺序是Symbol.isPrimitiv、toString、valueof
    let a = {
    i: 1,
    Symbol.isPrimitive {
    return this.i++
    },
    valueof () {
    return this.i++
    },
    toString () {
    return this.i++
    },
    }
  2. 利用setter和getter

相关文章

  • JAVA 之路第一讲

    数据类型: 基础数据类型 包装器数据类型 引用数据类型 null 数据类型 基础数据类型: 整型 byte(字节型...

  • php 数据类型和数据类型转化

    一、数据类型 基础数据类型 复合数据类型 特殊数据类型 二、获取数据类型 三、打印数据类型和值 四、数据类型判断 ...

  • OC和C中的数据类型

    数据类型对比 C语言数据类型C语言数据类型 OC数据类型

  • JAVA 核心笔记 || [2] 数据类型

    JAVA数据类型分为两大数据类型: 1.内置数据类型2.引用数据类型 内置数据类型 引用数据类型 上篇 : 开篇 ...

  • 数据类型

    数据类型作用:数据类型不同,空间大小不同。 数据类型分类:基本数据类型、引用数据类型基本数据类型:整数型、浮点型、...

  • Java知识之数据类型

    Java数据类型图表## Java数据类型分为:### 基础数据类型 引用数据类型 null类型 基础数据类型分別...

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • Java数据类型(慢慢积累,对于事物的理解也会不一样)

    Java的数据类型: 1. 内置数据类型(基本数据类型); 2. 引用数据类型; Java基本数据类型:(...

  • 【IOS 开发】 数据类型详解

    1. 数据类型简介及输出 (1) 数据类型简介 数据类型简介: Object - C 数据类型 分为 基本数据类型...

  • iOS 数据类型简介及输出

    一、数据类型简介及输出 1.数据类型简介 数据类型简介 : Object - C 数据类型 分为 基本数据类型, ...

网友评论

      本文标题:7中数据类型

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