2,javaScript中的数据类型

2、javaScript中的数据类型

  在javaScript中,变量可以存储原始值引用值

(1)原始值就是存储在中的简单数据,其类型和数值一一对应,通过变量名就可以直接访问到数据。

(2)引用值是存储在中的对象数据,通过变量名先去栈中找对象地址,根据对象地址到堆中找对象数据,顺序是:变量名(栈)->对象地址(栈)->对象数据(堆)

2.1、原始类型

1、5中原始类型:UndefinedNullBooleanNumberString

2、其中UndefinedNull是两个类型只对应一个数值的类型:Undefined类型只对应一个值undefined;Null类型也只对应一个值null

3、Boolean类型对应的是两个值:true和false

4、NumberString类型是对应无数个值的;比如Number类型对应值有1;2;3.....无数个数值;String类型也是对应无数个字符串:'jame'、'lindar'、“my name is taopopy”等等无数个值

2.1.1 Undefined类型

1、Undefined类型只有一个值undefined,意思就是类型未知,数值未知,这种类型通常出现在下面三种情况中

     (1)只声明而未赋值的变量,其类型和数值都是未知的

       var unKnown                 //仅声明未定义
       console.log(typeof unKnown) //打印结果是undefined

     (2)从未声明和赋值的变量(可以理解为无中生有的变量)

        console.log(typeof unKnown2)  //打印结果是undefined 

     (3)执行一个没有返回值的函数

      function(){
         console.log('none return')}
      var v1=function();//打印出none return
      console.log(typeof v1)//打印出undefined

2.1.2 Null类型

1、Null类型只有一个值null,之前在说引用值的时候提到的顺序:变量名(栈)->对象地址(栈)->对象数据(堆),现在如  果在堆中这个对象数据不存在,即对象为空,那么在栈中的对象地址是不是就不存在,为了来表示这个无用的对象地址,就        用null值来表示。但是如果用typeof来打印数据类型却是object,从类型的角度来说应该是Null,但是从null表示空对象的角      度来讲打印出object也是对的,所以ECMAScript也是从null表示空对象这个角度去定义的,即打印出来是object

     var obj=null;
     console.log(typeof obj);//打印出来是object

2.1.3 Boolean类型

1、Boolean类型中只有两个值true和false

2.1.4 Number类型

1、javaScript中的number类型可以描述整数值和浮点值

     var number1=100; //整数值
     var number2=5.185 //浮点值

2、数值前面添加前缀0描述为八进制,0x描述为十六进制

     var number1=011 //八进制,对应十进制的9
     var number2=0x11 //十六进制,对应十进制的17

3、科学计数法,用e来描述10的e次方

     var number1=1.01e3; //对应1010
     var number2=11111e-3; //对应11.111 

4、特殊的数值

    (1)Number.MAX_VALUE(1.7976931348623157e+308):表示Number类型能表达的最大值

    (2)Number.MIN_VALUE(5e-324):表示Number类型能表达的最小值

    (3)Number.POSITIVE_INFINITY(Infinity):表示正无穷,值为Infinity

    (4)Number.NEGATIVE_INFINITY(-Infinfiy):表示负无穷,值为-Infinfiy

    (5)NaN:表示不是一个数字,在字符串转化为数字失败的时候返回

      var num=Number("t");
      console.log(num);//打印出来就是NaN

          值得注意的是:NaN既不能计算也不能比较,自己和自己也不相等,判断一个变量的值是否为NaN就用isNaN(变量名)

     console.log(isNaN(num)) //如果num为NaN就为true,否则为false

2.1.5 String类型

1、String类型是javaScript中唯一没有固定大小的原始类型,与其他语言不一样的是,它既能用单引号来包括,也能用双引号来包括,如果字符串中嵌套字符串,则需要单双引号交替使用

    var love="you are my 'boyfriend'"  //打印出来就是you are my 'boyfriend' (是不是很邪恶)

2.转义字符大家用到的时候直接上网查 javaScript转义字符

2.2引用类型

1、对于引用类型数据,实际上指的是对象,什么是对象(请之前有面向对象的童鞋自动忽略下面对对象的讲解):对象,复杂的说它是一组功能行为互补的数据集合,简单的说就是由原始数据和函数构成的集合,例如人就是一种对象,而某个具体的人是一个对象(注意前面说人是用一种,这里说某人就是一个),对象人的属性有语言(String类型),国家(String类型),身高(Number类型),对象实例某个人小明在人的属性里就有对应具体的值,语言(String类型)->中文(String类型的值),国家(String类型)->中国(String类型的值),身高(Number类型)->175(Number类型的值)。

2,、创建对象的方式有两种,Object构造方法字面值的方式

     (1)Object构造方法:先创建一个对象,然后为对象添加一些属性

       var xiaoming=new Object();
       xiaoming.name='xiaoming'; //像不像废话
       xianming.country='china';
       xiaoming.languaage='chinese';
       xiaoming.height=175;

            当然还能加一些函数

       xiaoming.skill=function(){
         '我会写代码')
       }

     (2)字面值的方式(这种方式能更好的看出对象结构,也很像数组)

       var xiaoming={
          name:'xiaoming',
          country:'china',
          language:'chinese',
          height:175,
          skill:function(){
                  console.log('我会写代码')
                }
       }

3、获取对象属性也有两个方法,点语法取值键名字符串取值

     (1)点语法取值的格式就是:对象.属性

       console.log(xiaoming.name);       //打印结果是xiaoming
       console.log(xiaoming.language);   //打印结果是chinese
       xiaoming.skill();                 //函数结果是打印‘我会写代码’

     (2)键名字符串取值的格式就是:对象['属性']

      console.log(xiaoming['name']);//打印结果是xiaoming
      console.log(xiaoming['language']);//打印结果是chinese
      xiaoming['skill']();//函数结果是打印‘我会写代码’

           值得注意的是传入的键必须是字符串类型的,像下面的这种就不行

      console.log(xiaoming[name]); //错误



猜你喜欢

转载自blog.csdn.net/weixin_37968345/article/details/80577367