美文网首页
JS-数据类型

JS-数据类型

作者: 酒极子 | 来源:发表于2019-02-12 11:05 被阅读6次

    Javascript7种数据类型,分别为number string boolean symbol null undefined以及object

    数值(number):整数和小数(比如1和3.14)
    字符串(string):文本(比如Hello World)。
    布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
    undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
    null:表示空值,即此处的值为空。
    对象(object):各种值组成的集合。

    结下来分别具体介绍一下这7种数据类型

    number(数值)

    Js里的数值分别有
    十进制二进制八进制十六进制

    • 数值的表示
    十进制 二进制 八进制 十六进制
    1 0b1 0o123 0x1BC1
    1.1 0B1 0O123 0X1BC1
    .1
    1.23e2(科学)
    • 特点

    *十进制:没有前导0的数值。
    *八进制:有前缀0o0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
    *十六进制:有前缀0x0X的数值。
    *二进制:有前缀0b或0B的数值。

    默认情况下,JavaScript 内部会自动将八进制、十六进制、二进制转为十进制。

    string(字符串)

    • 字符串的表示

    单引号:'你好'
    双引号:"你好"
    空字符串:''&""
    空格字符串:' '&" "

    • 转义符

    为了让浏览器理解我们需要输入到页面中的一些特殊符号是文本,而不是命令,所以要在是文本的特殊符号前加上"\"
    比如

    var a = '\n'  //会车(行)
    var b = '\t'  //tab(制表符)
    var c = '\\'  // "\" 符号
    
    • 多行字符串

    多行字符串推荐用下面这种方式
    使用字符串拼接可以增加代码的易读性

    var s = '123' + '456'
    

    在ES6里可以用反引号 " ` "开头写多行字符串,反引号为数字键1左边的键

    var s = `123
    456`
    

    boolean(布尔)

    boolean是一个数学家,发明了逻辑学
    故事:下雨 上课 没带伞 的了肺病 死了
    布尔有两个值:true(真) false(假)

    • 与运算 和 或运算

    与运算
    a && b的真值表

    a\b

    或运算
    a || b的真值表

    a\b

    null和undefined

    一般来说,null表示空对象
    undefined表示空非对象

    • 区别:

    1.变量没有赋值:undefined
    2.有一个对象(object),现在不想赋值,给它null(推荐)
    有一个非对象,不想给他赋值,给他undefined(推荐)

    object(对象)

    前六种类型叫基本类型(简单类型)
    object叫复杂类型,由简单类型组成

    • 对象的表示

    比如下面就是一个对象

    {
    'key' : value
    'name' : 'jiujizi',
    'age' : 20,
    'gonder' : 'male'
    }
    

    'key':value这种格式储存值,除前六种基础类型外的类型都是变量。

    值得一提的是,key最好加上单引号,这样功能是最强大的
    (key如果不加单引号,就必须依照标示符的命名规则)
    还有对象里还能有对象,具体操作方式以后再说

    • 对象的引用
    porson = {  //对象赋值给变量porson
              'key' : value
              'name' : 'jiujizi',
              'age' : 20,
              'gonder' : 'male'
              }
    porson['name']  //jiujizi
    porson.name  //这个也可以,不过是特例
    

    上面就是对象的引用方式,记住单引号不能少

    • 对象的注意点
    var person = {'name':jiujizi}
    delete person['name']  // 删除person中的'name'这个key
    person.name  //undefined(无value),因为delete操作符将key和value都删了
    

    delete操作符能将对象的keyvalue都删了,与单纯的赋值成undefined不同

    var person = {name:'jiujizi'}
    person.name = undefined
    'name' in person  //  true
    

    对象内部的值就算被赋值为undefined,用in操作符来检验,它也依然是存在于该对象中的,并没有消失

    一些操作符

    • delete
    var person = {'name':jiujizi}
    delete person['name']  // 删除person中的'name'这个key
    person.name  //undefined(无value),因为delete操作符将key和value都删了
    

    用于删除对象对应的key值
    ,把key删了,value自然也就没了

    • in
    var person = {name:'jiujizi'}
    person.name = undefined  //  给name这个key赋值为'undefined'
    'name' in person  //  true,用in操作符来检验key是否存在于对象中
    

    用于检测一个key是否存在于一个对象中

    • for...in...
    var person = {name:'jiujizi',age:20}
    for(var key in person){
    console.log(key)  //  打印出person对象中的所有key
    }  //  但打印的顺序是不确定的
    

    for...in...可以用来遍历对象,但输出但值顺序却是不一定的

    • typeof
    typeof 1  //  'number'
    typeof 'aaa'  //  'string'
    typeof symbol  //  'symbol'
    typeof true  //  'boolean'
    typeof null  //  'object'
    typeof undefined  //  'undefined'
    var a = {}
    typeof a  //  'object'
    

    typeof()可以打印出数据类型
    打印出来的值都用单引号(双引号)包住,表示一个名词

    这里有两个BUG

    typeof null   //  'object'
    var fn = function(){}
    typeof fn  //  'function'
    
    1. null的数据类型应该是null,打印出来的却是object
    2. 数据类型function并不存在,但仍然可以打印出来,看来的确是一等公民了hhh

    相关文章

      网友评论

          本文标题:JS-数据类型

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