美文网首页
JS 里的数据类型

JS 里的数据类型

作者: 夜未央_M | 来源:发表于2018-11-27 20:30 被阅读6次

    数据类型


    JavaScript 的数据类型常见的有6种, 分别为undefined、null、布尔值 (boolean)、数值 (number)、字符串 (string)、对象 (object) Symbol (ES6 新增), 其中Symbol为新增的第7种. 由于刚接触js, 这里我们暂时只讨论前6种。简单类型应该分为:undefined、null、boolean、number、string, 复杂类型包括:object


    ☛typeof运算符

    typeof可以检测变量或者参数的类型,特例是:typeof null返回'object',typeof 函数返回'function'


    ☛数值 (number)

    Number

    JavaScript 内部,所有数字都是以64位浮点数形式储存,整数也是这样。所以,1与1.0是相同的,是同一个数。由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
    数值的精度及大小
    根据国际标准 IEEE 754,JavaScript 浮点数的64个二进制位,从最左边开始,是这样组成的。
    第1位:符号位,0表示正数,1表示负数
    第2位到第12位 (共11位):指数部分
    第13位到第64位 (共52位):小数部分 (即有效数字)
    符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度。
    数值的进制
    十进制 11 //11
    二进制 0b11 //3
    八进制 0o11 //9
    十六进制 0x11 //17

    isNaN(n)

    数值转换

    Number(n) 强制的把一个值强制的转为数字类型,如果遇到字符串转不了,则返回NaN。
    /*var topVal = "28px";
    //这时候是字符串减去数值,返回值是NaN
    console.log(topVal-10);
    */
    // parseInt操作的字符串必须以数字开头,把数字在前的字符串强制转为数值,有几位提取几位,直到遇到非数字,如果为非数字开头,则返回NaN
    var topVal = parseInt("28px")
    console.log(topVal-10);// 返回时18
    
    ParseInt操作的字符串如果以数字开头,则会把数字在前的字符串强制转为数值,有几位提取几位,直到遇到非数字,如果为非数字开头,则返回NaN


    ☛字符串 (string)


    //方法一
    var ids = 78965;
    var idstr = ids.toString();
    console.log(typeof idstr); //这时候78965就已经变成了字符串string
    
    //方法二
    console.log(string(ids));//尽量用这个方法
    

    字符串就是放在单引号或双引号之中的字符。
    反斜杠 ()用来表示一些特殊字符,比如:\n 表示换行符
    字符集
    JavaScript 使用 Unicode 字符集。允许直接在程序中使用 Unicode 码点表示字符,输出给用户的时候,所有字符都会转成字面形式。
    JavaScript 的单位字符长度固定为16位长度,即2个字节。但是,UTF-16 有两种长度:对于码点在U+0000到U+FFFF之间的字符,长度为16位 (即2个字节);对于码点在U+10000到U+10FFFF之间的字符,长度为32位 (即4个字节),对于码点在U+10000到U+10FFFF之间的字符,JavaScript 总是认为它们是两个字符。
    Base64转码
    Base64 可以将任意值转成 0~9、A~Z、a-z、+和/这64个字符组成的可打印字符。
    btoa():任意值转为 Base64 编码
    atob():Base64 编码转为原来的值


    ☛布尔值 (boolean)

    布尔值只有true和false这两个值。如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。undefined、null、false、0、NaN、""或'' (空字符串)这六个值会被转为false,其他值都为true。特别注意:空数组[]和空对象{}都为true。

    number、string、boolean这三种类型为原始类型,object为合成类型,一个对象往往是多个原始类型的值的合成,null和undefined是两个特殊值。


    ☛undefined和null


    都表示没有值。
    1.(规范)如果一个变量没有被赋值,那么这个变量的值就是undefined。
    2.(习俗)如果你想表示一个还没有被赋值的对象,就用null,如果你想表示一个还没被赋值的字符串/数字/布尔/symbol就用undefined(直接var a;就行了,不用写var a = undefined; )
    undefined 的类型只有一个值,即特殊值,即特殊的undefined, 表示"未定义",转为数值时为NaN。
    NaN不等于NaN!!!如果想声明一个变量的类型是undefined 直接var 变量 变量不赋值即可。

    null与undefined都可以表示“空”,非常相似。区别在于:null是一个表示“空”的对象,转为数值时为0;


    ☛对象

    对象就是一组“键值对” (key-value)的集合,是一种无序的复合数据集合。它的值可以是任意的数据类型包括对象自身,下图是一个对象:

    读取对象值的方法
    1.obj.key:

    2.obj['key']:


    对象的所有键名都是字符串
    读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。请注意,如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。
    查看一个对象本身的所有属性,可以使用Object.keys方法
    属性是否存在:in运算符用于检查对象是否包含某个属性。in运算符的一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。可以使用对象的hasOwnProperty方法判断一下,是否为对象自身的属性。
    for...in循环用来遍历一个对象的全部属性。
    它遍历的是对象所有可遍历 (enumerable)的属性,会跳过不可遍历的属性。
    它不仅遍历对象自身的属性,还遍历继承的属性。

    1.对象对面可以有对象。
    2.object的key一律是字符串,不存在其他类型的key。
    3.object['']是合法的。
    4.object['name']可以写做object[name],注意object.key和object[key]不同
    5.删除对象中的某一项 delete object[‘key’] 直接删除整项包括键名
    对象内使用delete删除的是键名+键值(使用in查询不到键名),而将键 值设置为undefined,键名还是依然存在的(可以通过in查询到)。
    6.读取两种方式:object.key object["key"] 如果key为3+3的形式,会自动运算后再取值。
    7.查询一个键是否在对象内 键名 in 对象

    相关文章

      网友评论

          本文标题:JS 里的数据类型

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