JS 里的数据类型

作者: YukiWeng | 来源:发表于2019-06-14 12:26 被阅读8次

    number // 数值,包括整数及小数
    string // 字符串
    boolean // 布尔值, true false
    undefined // 未定义或不存在
    null // 空值
    object // 包括对象、数组、函数
    symbol


    number 数值

    整数和小数:1 1.1 .1
    科学记数法:1.23e2
    二进制:0b11
    八进制:011(后来 ES5 添加了 0o11 语法)
    十六进制:0x11

    转换为number的五种方法:

    number('1')===1
    parseInt('1',10) ===1// 十进制 ,parse意为解析,需重点留意
    parseFloat('1.23')===1.23 //小数,用浮点数,浮点数只有十进制形式,故不用再标注
    ‘1’-0===1 //任何数据-0 均可得到一个number ,快捷常用
    +‘1’===1 // + 表示以数字形式取原本的值,+ ‘-1’=== -1
    

    string 字符串

    var a='\''
    var a='\n' // 回车
    var a='\t' // 制表符Tab
    var a='\\' // 符号\
    //以上字符长度均为1
    

    用反斜杠 \ 来表明此符号不是结束符号
    需注意:‘’表示空字符串;‘ ’表示空格字符串

    ES6 新加了语法,用反引号` 可以解析反引号内所有内容,多行字符串直接回车即可

    var s=`123
    456`
    // s.length是7,因为包含了回车
    var q=`123
     456`
    // q.length是8,因为包含了回车和一个空格
    

    转为字符串的三种方法:

    .toString
    +''  //加上空字符串,若左右有一边是字符串,加号会尝试把左右两边数据转为字符串
    window.String()  //全局函数
    

    boolean 布尔值

    只有两个值:true false
    a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
    a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true

    转为布尔的两种方法

    Boolear()
    !! // 取反再取反 快捷常用
    
    Boolear(1)//true
    !!1 //true
    

    除了下面六个值被转为false,其他值都视为true。
    undefined
    null
    false
    0
    NaN
    ""''(空字符串,引号中间无空格。需要与空格字符串区别开,前者长度为0,后者长度为1)

    注意,空数组([])和空对象({})对应的布尔值,都是true。


    undefined 与 null 的区别

    规范:如果一个变量没有被赋值,那么这个变量的值就是 undefiend
    习俗:
    有一个对象object,暂不赋值,可初始设置为null
    有一个非对象,暂不赋值,可初始设置为undefined


    object 对象

    对象是最复杂的数据类型,又可以分成三个子类型:
    狭义的对象(object)
    数组(array)
    函数(function)
    (狭义的对象和数组是两种不同的数据组合方式)

    object 就是其他几种基本类型(无序地)组合在一起
    object 里面可以有 object
    object 的 key 一律是字符串,不存在其他类型的 key
    object[''] 是合法的
    object['key'] 可以写作 object.key
    (注意 object.key 与 object[key] 不同)

    下面代码,用 delete 将 key 和 value 都清空了。
    若直接将person.name=undefined,则key还保留着,只是value被更改。

    delete person['name'] // 或者 delete person.name
    person.name // undefined 无value
    'name' in person //false 无key
    

    用 for ...in 遍历 对象的属性(无序)

    var person={name:'wy',gerder:'female'}
    for(var key in person){
    console.log(key)
    console.log(person[key])//此处不能用person.key 
    }
    

    typeof

    使用 typeof 来查看数据类型

    typeof 123 // “number”
    typeof '123' // "string"
    typeof false // "boolean"
    
    function f(){}
    typeof f()
    // "function"
    
    typeof undefined // "undefined"
    

    一个变量a,若无声明而直接使用会报错,但若用typeof来检查,则不报错。
    可利用此特性

    if(typeof a==="undefined"){}  // 由于之前a未声明,此处若不加typeof 则会报错
    

    空数组[ ] 的类型也是object ,可见,js中,数组本质也是一种特殊对象
    不过,用 instanceof 运算符可以区分数组和对象

    typeof {} //"object"
    typeof [] //"object"
    
    var a={};
    var b=[];
    a instanceof Array //false
    b instanceof Array // true
    

    有两个特殊情况要注意,JS的历史遗留问题:

    typeof null //"object"
    typeof function(){} //"function"
    

    实际上,null的类型应该为null,function的类型应该为对象(object)
    (对象类型包括:狭义的对象、数组、函数)

    相关文章

      网友评论

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

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