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

JS 里的数据类型

作者: 3477762e2a91 | 来源:发表于2019-01-08 15:23 被阅读0次

    1、JavaScript 的数据类型,共有七种。

    数值(number)
    字符串(string)
    布尔值(boolean)
    undefined
    null
    对象(object)
    符号(symbol)ES6新增

    通常,数值、字符串、布尔值这三种类型,合称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。

    对象则称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。

    至于undefined和null,一般将它们看成两个特殊值。

    ① 数字(number)
    JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
    十进制:没有前导0的数值。(整数和小数)
    八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。(011)
    十六进制:有前缀0x或0X的数值。(0x11)
    二进制:有前缀0b或0B的数值。(0b11)
    科学计数法:(1.23e2)
    JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数)。容易造成混淆的是,某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算。

    由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。

    0.1 + 0.2 === 0.3
    // false
    
    0.3 / 0.1
    // 2.9999999999999996
    
    (0.3 - 0.2) === (0.2 - 0.1)
    // false
    

    ② 字符串(string)
    字符串就是零个或多个排在一起的字符,放在单引号''或双引号""之中。
    字符串默认只能写在一行内,分成多行将会报错。
    如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠或使用'+'或者反引号"`"

    var s='12345\
    67890'  //'1234567890'
    //或者
    var s1='12345'+
    '67890'  //1234567890
    //或者
    var s2=`12345
    67890`  //1234567890
    

    反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
    需要用反斜杠转义的特殊字符,主要有下面这些。

    \0 :null
    \b :后退键
    \f :换页符
    \n :换行符
    \r :回车键
    \t :制表符
    \v :垂直制表符)
    \' :单引号
    \" :双引号
    \\ :反斜杠
    

    ③ 布尔值(boolean)

    表示真伪的两个值,即true(真)和false(假)
    a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
    a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true
    

    ④ undefined null
    null与undefined都可以表示“没有”,含义非常相似。
    null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。

    undefined表示“未定义”

    // 变量声明了,但没有赋值
    var i;
    i // undefined
    
    // 调用函数时,应该提供的参数没有提供,该参数等于 undefined
    function f(x) {
      return x;
    }
    f() // undefined
    
    // 对象没有赋值的属性
    var  o = new Object();
    o.p // undefined
    
    // 函数没有返回值时,默认返回 undefined
    function f() {}
    f() // undefined
    

    ⑤ 对象(object)
    对象是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

    var a = {
      name:'frank',
      age:18,
      children:'null'
    }
    

    key必须为字符串形式,引号可以省略。但是根据标识符规则:1.首字母不能使数字、2.中间不能有空格、3.后边必须是合法字符。

    {9a:'wang'}//错误形式
    {'9a':'wang'}//正确形式
    

    调用时,有两种方法:点方法和方括号法。

    a['name']//正确
    

    当key的命名符合标识符规则时,可以改写为点方法。

    a.name//正确,特例
    

    可以对对象中的key进行删除。

    delete a['name']
    a.name //undefinedd (无value)
    'name' in a //false (无key)
    

    当使用:

    a['name']=undefined
    'name' in a //true
    

    此时,只是更改'name'属性的value值为undefined,所以所以key还在。
    遍历对象(for....in...)

    for (var key in a) //此时打印出key的值
    

    如果需要打印出value的值

    console.log(a[key])//正确方法
    //错误方法示范
    console.log(a.key)
    //此时a.key===a['key'],
    //而a中没有'key'这个属性
    

    2、typeof 运算符
    typeof运算符可以返回一个值的数据类型。

    typeof 123 // "number"
    typeof '123' // "string"
    typeof false // "boolean"
    
    function f() {}
    typeof f // "function"
    typeof undefined // "undefined"
    typeof window // "object"
    typeof {} // "object"
    typeof [] // "object"
    typeof null // "object"
    typeof /([a-z])/ //"object"
    

    相关文章

      网友评论

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

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