美文网首页
js数据类型的理解

js数据类型的理解

作者: sunny519111 | 来源:发表于2016-12-31 13:33 被阅读30次

    标识符

    标识符定义

    定义: 标识符是指变量、函数、属性的名字,或者函数的参数

    1. 区分大小写
    2. 必须以字母 或$或_开头

    变量提升

    js的工作引擎的工作方式:先解析代码,获取所有被声明的变量,然后一步步的运行。这就让所有的变量声明语句,都会被提升到代码的头部,这就是变量提升。

    变量提升的例子

        console.log(b)  //undefined
        var b=2
        等价于
        var b
        console.log(b)
        b=2
    

    数据类型

    1. null(空缺)
    2. undefined(未定义)
    3. Number(数字类型)
    4. String(字符串类型)
    5. Boolean(布尔类型)
    6. Object(对象)

    基本数据类型

    基本数据类型

    1. Number(数字类型)
    2. String(字符串类型)
    3. Boolean(布尔类型)

    Number

    js的数字类型和其他语言不一样,没有整型和浮点型的区别,统一都是Number类型

       var a=10  //十进制
       var b=o73 //八进制
       var c=ox44  //十六进制
    

    Number中的浮点数

    浮点数:浮点数是指数字包含小数点,小数点后至少有一位数字(没有或者是0会转为整数),前面可以没有。

      var a= 0.75;
      var b=.5;
    

    虽然浮点数的最高精度是17位,但是真正计算的时候精度不如整数

    1-0.9  //0.09999999999999998
    0.1+0.2  //0.30000000000000004
    

    数字范围

    Number不能表示所有数字,有个范围

    • Number.MIN_VALUE: 5e-324
    • Number.MAX_VALUE: 1.7976931348623157e+308
      超过最值会被转换为Infinity(无穷大),-Infinity(负无穷大)

    判定无穷

    可以通过isFinite()方法判断。超过返回true,没有返回false

    isFinite(Number.MAX_VALUE + 1); // true
    isFinite(Infinity);  // false
    isFinite(NaN);       // false
    isFinite(-Infinity); // false
    
    isFinite(0);         // true
    isFinite(2e64);      // true
    
    isFinite("0");       // true
    

    Boolean(布尔型)

    布尔值代表“真”,“假”二中状态,“真”用关键字“true”,"假"用关键字false

    下列运算符会返回布尔值

    • 二元逻辑运算符: &&(And),||(Or)
    • 前置逻辑运算符: !(Not)
    • 相等运算符: ===,!==,==,!=
    • 比较运算符: >,<=,<,<=

    下列值是false,其余都是true

    1. false
    2. ""
    3. null
    4. undifined
    5. NaN
    6. 0

    String类型

    数据用双引号和单引号包裹起来的形式,俗称字符串类型。
    获取字符串的长度可以用自带的length属性。从1开始

    var a=''hhh'
    a.length        //3
    

    字符串类型自带的方法

    1. indexOf()获取元素位置,里面是字符串,没有则返回-1。检索从0开始。
      ' abc'.indexOf('b')   //1
    
    1. toUpperCase()转换为大写,toLowerCase()转换为小写 (原来的还是没有改变)
      'abc'.toUpperCase()  //ABC
      'ABC'.toLowerCase()  //abc
    

    数组和字符串之间的转换

    1. 字符串的split()方法可以把字符串转换成数组。默认用‘,‘’隔开 (原来的还是没有改变)
    'ab,c'.split("")    //['a','b',',','c']
    'abc'.split()     //['abc']
    'abcdf'.split('c')   //['ab','df']
    
    1. 数组的join()方法可以把数组转换新的字符串,默认用','连接 (原来的还是没有改变)
    ['a','b','c','d'].join()    //'a,b,c,d'
    ['a','b','c','d'].join('')    //'abcd'  用空的连接
    

    获取字符串中的片段

    1. substr(start,lenght)方法 检索从0开始,返回新的字符串
      'abcdef'.substr(2,3)  //'cde'
    
    1. substring(start,end)方法,检索从0开始,返回新的字符串,不包括end,长度为end-start
    'abcdef'.substring(2,3)  //'c'
    

    引用类型

    Object(对象)又叫引用类型,包括三种。

    • 普通对象
    • 数组
    • 函数

    函数:是一种特殊的对象,我们可以通过构成函数生成普通对象。

    null和undefined的区别

    null的用法和知识

    null: 表示空,通常表示先占有一个内存,便于分配给后面元素。
    典型用法:

    • 作为函数的参数,表示该函数的参数是一个没有任何内容的对象。
    • 作为对象原型链的终点。

    undefined的用法

    undifined: 表示不存在的值,表示已经分配存放空间,但是没有任何值。
    典型用法:

    • 变量被声明了,但是没有赋值时,就等于undefined。
    • 调用函数时,应该提供的参数没有提供,该参数就等于undefined
    • 对象没有赋值的属性,该属性的值为undefined
    • 函数没有返回值时,默认返回undefined

    用法区别

    1. typeof运算符的值不一样
       typeof(undefined)    //undefined
       typeof(null)            //object
    
    1. Number()方法的值不一样
       Number(undefined)    //NaN
       Number(null)              // 0
    

    undefined == null //true

    typeof运算符的用法

    定义

    typeof运算符可以返回一个值的数据类型,返回的是字符串

    typeof 5  //'number'
    typeof 'adc'  //' string'
    typeof null  //'object'
    typeof undefined  //'undefined'
    typeof NaN    //'number'
    typeof function(){}  //' function'
    typeof []     // 'object'
    typeof {}   //'object'
    typeof false  //'boolean'
    

    NaN

    NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,也无法比较大小,包括自己

    typeof NaN    //number
    

    数据转换

    有三个函数可以把非数值转换为数值

    1. Number()方法
    2. parseInt()方法
    3. parseFloat()方法

    Number规则相当复杂而且不合理,几乎不使用,常用的是后两个,两个规则类似.

    1. 忽略字符串前面的空白字符,找到第一个非空白字符
    2. 如果第一个字符不是-或者数字返回NaN
    3. 如果是继续解析,直到非数值模式为止
    4. 0开头会当做八进制,0x开头会当做十六进制,但是可以指定第二个参数指定基数
    parseInt("hh44")  //NaN
    parseInt('-55')    //55
    parseInt('5512')  //5512
    parseFloat(".5")  //0.5
    

    相关文章

      网友评论

          本文标题:js数据类型的理解

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