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

JS 里的数据类型

作者: Jason_Shu | 来源:发表于2018-09-14 19:10 被阅读0次
    1. 概述
      数据类型一共有7种,分别是数字(Number), 字符串(String),布尔值(Boolean), Symbol, null, undefined, 对象(Object)。(其中Symbol类型详见ES6)

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

    其中对象还可以分为三类,分别是:狭义的对象(object), 数组(Array), 方法(function)。

    1. undefined和null
      好像只有JS有两个代表“空值”的语言。
      null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。

    undefined表示“未定义”,下面是返回undefined的典型场景。

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

    建议在声明某个变量,但是现在还没赋值时。对于除了对象以外的数据类型,用var a = null,对于对象类型,用var obj = undefined.

    1. typeof运算符
      判断变量的类型,返回一段字符串。
      七种数据类型用typeof运算基本返回对应的类型。比如:
    typeof 123  // "number"
    

    在概述中说,对象还分为狭义对象、数组和函数。数组返回的是object,但是函数返回function, null 返回object.

    let arr = [];
    let function = function() {};
    typeof arr  //  "object";
    typeof function //  "function";
    typeof null;  //  "object"
    
    1. 布尔值
      如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
    undefined
    null
    false
    0
    NaN
    ""或者''(空字符串)
    

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

    5.对象属性
    在做练习的时候,对象属性让我有些疑惑,这里做一个记录解析。
    首先我们要明确一个概念,就是对象(Object)中每一个key其实是字符串,就算我们这么声明:

    var obj = {
      name: 'Jason',
      age: 18,
    };
    

    obj中的name和age都是字符串。在取对象属性时,有如下情况:

    var obj = {
      name: 'Jason',
      age: 18,
    };
    obj['name']   //  'Jason'
    

    obj['name']这是最正确书写方式,但是有一种特例写法,就是obj.name, 这种方式是默认‘.’后面的‘name’必须符合标识符才可行。

    var obj = {
      '3+3' : 6,
      '6': 12,
      '9a': 9,
    }
    obj.9a  // 报错
    

    如果写成obj[name]则是undefined,因为此处的name是个变量,没有指明变量name的值则为undefined。
    如果[]中是个数字,则会自动转为字符串.

    var obj = {
      '3+3' : 6,
      '6': 12,
    }
    obj[3+3]  // 12
    

    obj[3+3]中会先计算出3+3=6,那么obj[3+3]就等价于obj[6],然后等价于obj['6'].

    相关文章

      网友评论

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

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