# 数据类型

作者: 多叉树;转载须注明出处

JS 作为弱类型的编程语言, 在声明变量时,统一使用 varconst、或者let关键字。但是每个变量都有一个隐式的数据类型。

# 数据类型检测

使用 typeof 关键字可以检测数据类型。

<script>
			// 检测数字类型
      console.log(typeof(3));
</script>

# Number 数字类型

  • 整形、浮点型在内的所有数字,都是数字类型。
typeof 5
typeof 15.1

  • 浮点数如果整数部分是0,可以省略。
.3
typeof .3
  • 数字可以使用科学计数法表示。
2e4 // 20000
typeof 2e4;

2e-4; //0.0002
typeof 2e-4

# NaN

NaN 代表运算结果不是一个数字。

  • 特殊的数值型类型, 表示不是一个数字,但是此值的类型却是一个数值类型。

// 输出Number
typeof NaN
  • 在数学运算中,若数字类型的运算不能得到数字,其结果往往都是NaN。
// 输出 NaN
1/Boolean
  • NaN 不自等 ,即NaN不等于NaN。

// 输出 false
NaN == NaN 

# 字符串类型

由引号包裹的(可以是单引号也可是双引号)若干个字符组成的集合就是字符串。字符串通常表示一段文字。

特性

    • 加号可以拼接多个字符串。

      <script>
        var a = 'hello';
        var b = ' workd';
        console.log(a + b);
      </script>
      
  • 模板字符串,用反引号表示。可以嵌入变量,在运行时会被解析替换。

var a = 'halou';
// 输出 heihe halou world
console.log(`heihe ${a} world`)
  • 空字符串, 引号当中没有任何值。
console.log('');
  • 字符串属性 length ,表示字符串的长度。
var a = 'woshi';
console.log(a.length);

常用方法

  • charAt()

    获取指定位置字符,传入字符串索引位置,找到对应字符;传入超过字符串长度的索引返回空字符串。

<script>
var a = 'hello';
console.log(a.charAt(1));
</script>
  • substring(indexA, indexB)

    提取子串, 如果 indexA > indexB , 则取子串 [indexA, indexB);

    如果参数 indexB > indexA ,则取子串 [indedB, indexA) ;

    如果省略第二个参数,表示截取到字符串结尾。

<script>
    var str = 'halouworld';

    // 输出 al
    console.log(str.substring(1, 3));
    // 输出 al
    console.log(str.substring(3, 1));

    // 从下标位置3开始截取到结尾
    console.log(str.substring(3));

</script>
  • substr(index, length)

    提取子串, 从第一个参数index索引位置开始, 长度为 length 的子串;

    length 参数可以省略, 表示到字符串结尾;

    index 可以为负数 ,表示倒数位置(字符串右边第一个值的下标为 -1 ,依次为 -1 , -2 ….)。

    Untitled

    <script>
      var str = 'wearehuman';
      // 输出weare
      console.log(str.substr(0, 5));
      // 输出 wearehuman
      console.log(str.substr(0));
    
      // 输出 hum , index 虽然可以为负数, 但是还是字符串的左边向右崛起
      console.log(str.substr(-5, 3));
    </script>
    
  • slice(indexA, indexB)

    提取子串(切片), [indexA, indexB) ;

    indexB 可以省略, 表示到字符串结尾;

    indexA 参数也可以为负数, 类似 substr 函数;

    参数indexA 必须小于 indexB。

    <script>
      var str = 'wearehuman';
      // ea
      console.log(str.slice(1, 3));
      // earehuman
      console.log(str.slice(1));
      // a
      console.log(str.slice(-2, -1));
    
      // 当 indexA 小于 indexB 时, 输出空字符
      console.log(str.slice(2, 1));
    
    </script>
    
  • toUppderCase

    将字符串变为大写。

    <script>
      var str = 'wearehuman';
      // 输出 WEAREHMMAN
      console.log(str.toLocaleUpperCase());
    </script>
    
  • toLowerCase

    将字符转成小写字母。

    <script>
        var str = 'weareHMman';
    		// 输出 wearehuman
        console.log(str.toLowerCase());
    </script>
    

常用函数总结

方法 功能
charAt() 获取指定位置字符,传入字符串索引位置,找到字符;传入超过字符串长度的索引返回空字符串。
substring(indexA,indexB) 提取子串, 如果 indexA > indexB , 则取子串 [indexA, indexB);如果参数 indexB > indexA ,则取子串 [indedB, indexA) ;如果省略第二个参数,表示截取到字符串结尾。
substr(a,b) 提取子串, 从第一个参数index索引位置开始, 长度为 length 子串;length 参数可以省略, 表示到字符串结尾;index 可以为负数 ,表示倒数位置(字符串右边第一个值的下标为 -1 ,依次为 -1 , -2 ….)。
slice(a, b) 提取子串(切片), [indexA, indexB) ;indexB 可以省略, 表示到字符串结尾;indexA 参数也可以为负数, 类似 substr 函数;参数indexA 必须小于 indexB
toUppderCase() 将字符串变为大写
toLowerCase() 将字符串变为小写
indexOf() 检索字符串首次出现的位置,如果检索不到, 返回-1

# 布尔类型

布尔值只有两个 ,true(真)和false(假)

<script>
  var bool = (10 > 20);
  // 输出 true
  console.log(bool);
  // 输出 boolean
  console.log(typeof bool);
</script>

# undefined

主打一个未定义, 一个没有经过初始化的变量,默认值是 **undefined 。**默认值 undefined  指向的数据类型 也叫 undefined  。

<script>
    var undi ;
    // 输出 undefined
    console.log(undi);
    // 输出 undefined
    console.log(typeof undi);

</script>

# null

表示被置空的对象, 如果一个对象在经过运算后, 没有得到任何值, 那么就可以赋值为null。

不过 null 用 typeof 检测 得到 的却是 object 类型 。null 既是一种数据类型,但它的类型却是object 不知道在搞啥子

<script>
      var emp = null ;
      // 输出 null
      console.log(emp);
      // 输出 类型object
      console.log(typeof emp);

  </script>

# 总结

在js中还有很多复杂的类型, 例如 function, object , 这些预计会留到后面写。

以下是本文中涉及的数据类型。

数据类型 备注 typeof 检测 举例
number 数字 number var a = 1
string 字符串 string var b = ‘aaa’
boolean 布尔 boolean var a = true
undefined 未定义 undefined var bool = undefined
null 被置空的对象 null var emp = null