基本数据类型和数据类型的转换

212 阅读4分钟

1、typeof 数据类型检测

使用typeof运算符可以检测值或者变量的类型

typeof 6;       // 'number'
typeof '你好'; //'string' 

2、基本数据类型

数字类型、字符串类型、布尔类型、undefined类型、null

2.1 Number(数字)类型

简介

所有数字不分大小、整浮、正负,都是数字类型

2.1.1 小数中的0可以省略

.5;         //0.5
typeof .5; // 'number'

2.1.2 NaN

简介

  • NaN的值表示不是一个数字(Not-A-Number),但它是一个数字类型的值
typeof NaN;    //'Number'
  • 0除0的结果是NaN,在数学运算中,若结果不是数字的,其结果往往都是NaN
  • NaN不自等

2.1.3 不同进制的数字

  • 二进制数字以0b开头
   0b10   // 2
  • 八进制数以0开头
   017   // 15

十六进制数字以0x开头

   0xf   // 15

2.1.4 科学计数法

较大数或较小数(绝对值较小)可以写成科学计数法

  3e8     // 300000000

  3e-4   //  0.0003

2.2 String(字符串)类型

字符串拼接

加号可以用来拼接多个字符串

 '你好' + '啊'   // 你好啊

字符串和变量的拼接

 var year = 2022;
 var str = '杭州亚运会' + year + '年召开';
                       斩断链接

length属性

字符串的length属性表示字符串的长度

 'length属性'.length  // 8
 ''.length           // 0

空字符串

 var str = '';

字符串常用方法

 charAt()        得到指定位置字符
 
 substring()     提取子串
 substr()        提取子串
 slice()         提取子串
 
 toUpperCase()   将字符串变为大写
 toLowerCase()   将字符串变为小写
 
 indexOf()       检索字符串

substring方法

1. substring(a, b)方法的到从a到b结束(不包括b处)的子串

  例:'abcdefg'.substring(0, 3);  // 'abc'

2. substring(a, b)方法如果省略第二个参数,返回的子串会一直到字符串的结尾

  例:'abcdefg'.substring(0);    // 'abcdefg'

3. substring(a, b)中,a可以大于b,数字顺序将自动调整为小数在前

    例:'abcdefg'.substring(0, 3);   // 'abc'
        'abcdefg'.substring(3, 0);  // 'abc'

slice方法

1. slice(a, b)方法得到从ab结束(不包括b处)的子串

   例:'abcdefg'.slice(0, 3);   // 'abc'

2. slice(a, b)的参数a可以是负数
   
   例:'abcdefg'.slice(-4);       // 'defg'
       'abcdefg'.slice(-4, -1);   // 'def'

3. slice(a, b)中,参数a必须小于参数b

substr方法(避免使用)

1. substr(a, b)中,将得到从a开始长度为b的子串
   
   例:'abcdefg'.substr(0, 3);  // 'abc'

2. substr(a, b)中,b可以省略,表示到字符串结尾

   例:'abcdefg'.substr(0);    // 'abcdefg'

3. substr(a, b) 中,a可以是负数,表示倒数位置
   例:'abcdefg'.substr(-4);      // 'defg'
       'abcdefg'.substr(-4, 4);  // 'defg'

indexOf()方法

  • indexOf()方法返回某个指定的字符串值在字符串中首次出现的位置
  • 如果要检索的字符串值没有出现,则该返回-1
'abcdefg'.indexOf('defg');  // 3

'abcdefg'.indexOf('h');    // -1

2.3 Boolean(布尔)类型

两个值,true、false

Number(true);   // '1'

Number(false); // '0'

2.4 Undefined 类型

  • 一个没有被赋值的变量的默认值是undefined
  • undefined的类型和值都是它自己本身。

变量提升的情况

在变量声明提升时,变量的值也是undefined。

console.log(a);        // undefined
console.log(typeof a); // undefined

var a = 10;

2.5 Null

  • null表示“空”,它是“空对象”
  • 当我们需要将对象销毁、数组销毁或者删除事件监听时,通常将它们设置为null。
typeof null; // 'object'

3、数据类型的转换

3.1 转字符串

  • String()函数
  • toString()方法
String(123);      // '123'
(123).toString;  // '123'

3.2 转数字

  • Number()函数
  • parseInt()函数
  • parseFloat()函数

3.2.1 Number()函数

不是纯数字转为NaN

Number('123四');   \\ NaN
Number('');        \\ 0
Number(null);      \\ 0
Number(undefined);  \\ NaN

3.2.2 parseInt()函数

将字符串转为整数

  • 自动截取掉第一个非数字字符后的所有字符
parseInt(123.4);  // 123
  • 字符串不是以数字开头,转为NaN
parseInt('滴答滴答1');  // NaN

3.2.3 parseFloat()函数

将字符串转为浮点数

  • 将小数字符串转为数字小数
parseFloat(123.4);  // 123.4
  • 自动截取掉第一个非数字字符、非小数点后的所有字符
parseFloat(123.4五);  // 123.4
  • 字符串不是以数字开头,转为NaN
parseFloat('滴答滴答1');  // NaN

3.3 转布尔值

Boolean()函数

  • 0 和 NaN 转为false,其他数字转为true
Boolean(NaN);         // false
Boolean(0);          // false

Boolean(Infinity);  // true
Boolean(123);      // true
  • 空字符串变为false
Boolean('');      // false
Boolean('123');  // true
  • undefined 和 null 都为false
Boolean(undefined);  // false
Boolean(null);      //  false