阅读 221

Javascript-数据类型有哪些??(请问js中的基本数据类型有几种)

字面量

  • 字面量( literal )是用于表达一个固定值的表示法,又叫常量

  • 字面就是所见即所得,js 程序执行到代码中的字面量,会立即知道它是什么类型的数据,值是多少。

  • 可以用于表示固定值,比如:数字、字符串、undefined、布尔类型的字面值等。

- 数字   字面量:8 9 10 - 字符串 字面量: "大前端" - 布尔  字面量:true,false 复制代码

- 数字 字面量

  • 这里的数字就是数学意义上的数字。

  • 数字字面量区分:整数字面量浮点数字面量(小数)特殊值

  • 书写时直接书写字面量,不需要添加任何辅助符号。

> 整数
  • 整数字面量写法区分进制。

  • 整数可以被表示成十进制(基数为10)八进制(基数为8)以及十六进制(基数为16)

  • 在进行算术计算时或者参与程序,所有八进制和十六进制的数字都会被转换成十进制。

  • 特殊的情况 八进制中,如果以0开头,每个位数上有超过0-7之间的数字出现,也就是8/9,强制忽视前面的0,直接将后面数字当做十进制。

十进制: 是最基本的数值字面量格式,可以直接在代码中输入。        逢十进一,每个位数只能是0-9之间的数字。                console.log(10);            console.log(-10);        10                          -10   复制代码

八进制: 字面值必须带前导0、0O、0o 。八进制整数只能包括数字0-7。        逢八进一,每个位数上只能是0-7之间的数字,而且必须添加前缀,0、0O、0o。                console.log(0100);           console.log(01000);        0(代表8进制)                 0(代表8进制)        1(代表64位)8*8=64            1(代表8*8*8位)=512        0(代表8位) 0*8=0             0(代表64位)0*64=0        0(代表个位)0*1=0             0(代表8位)0*18=0                                     0(代表个位)0*1=0 复制代码

十六进制: 前缀是0x或0X。后面可以包含数字(0-9)和字母a~f或A~F。         逢十六进一,每个位数上必须是0-9、a-f之间的符号,必须写前缀,0x、0X开头。                  console.log(0x100);         console.log(0x110);         0x (代表十六进制)             0x (代表十六进制)         1(代表16的2次方)16*16=256   1(代表16的2次方)16*16=256          0(代表16位) 0*8=0           0(代表16位)1*16=0         0(代表个位)0*1=0            0(代表个位)0*1=0          复制代码

> 浮点数
  • 就是数学概念中的小数,包含:整数、小数点、小数部分。

  • 不区分进制,都是十进制下的数字。

  • PS: 如果浮点数是0 < 1的,可以省略小数点前面的0不写。

  • 浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数. 例如:0.1 + 0.2; 结果不是 0.3,而是:0.30000000000000004。

       console.log(1.23);        1.23        console.log(-1.23);       -1.23        console.log(0.618);       0.618        console.log(.618);        .618        console.log(1.2e4);       12000        console.log(1.2e-4);      0.00012        console.log(0.1 + 0.2);   0.30000000000000004         复制代码

> Infinity无穷
  • Infinity:无穷的意思。

  • 由于计算机计算能力有限,如果高于最大计算值直接显示为正无穷 Infinity,如果低于最小

计算值直接显示为 -Infinity。

  • Infinity本身就是一个数字。

  • 最小值: Number.MIN_VALUE,这个值为: 5e-324

  • 最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308

  • 无穷大:Infinity  无穷小:-Infinity

    console.log(Number.MIN_VALUE);      5e-324     console.log(Number.MAX_VALUE);      1.7976931348623157e+308     console.log(-5e789);                -Infinity     console.log(5e789);                 Infinity     console.log(Infinity);              Infinity 复制代码

> NaN 不正常数
  • NaN: not a number表示不是一个正常的数,但是还是一个 Number 类型的数字。这个数字 没办法用前面的表示方法表示。

  • NaN与任何值都不相等,包括他本身。

  • isNaN():判断一个数据是不是一个NaN。

  <script>     // NaN 不是一个正常的数     console.log(0 / 0);            NAN     console.log(isNaN(0 / 0));     true     console.log(isNaN(23));        false   </script> 复制代码

- 字符串 字面量

  • 字符串是由任意个数的有序或无序的字符组成的串,类似人类的语言,在 JS 中有自己特殊的写法。

  • 组成:字母、汉字、特殊符号、空白等。

  • 字符串字面量写法:是用一对单引号(' ')双引号(“ ”)引号内的字符构成,引号中间的字符可以有任意多个,也可以是没有字符的空字符串

  • PS:字符串中如果字符包含了双引号,则其外部应该由单引号标示,反之相同。

<script>        // 双引号“”和单引号''都可以           console.log(" ");        console.log(' ');             // 字符串的字面量        console.log("这是一个'字符'串#%^&");               这是一个'字符'串#%^&        console.log('a"b"c');                            a"b"c        console.log('123');                              123        console.log('     ');                            (空字符串不显示)        console.log('');                                 (空字符串不显示)   </script> 复制代码

转义符`

  • 在字符串中可以使用转义符 \ 加普通字母,替代一些特殊字符\

\n 换行\ \t Tab制表

  • 字符串中可以使用转义符 \ 将特殊功能字符变为普通字符。

\' 单引号  \" 双引号  \\ 反斜杠

<script>        // 换行\n        console.log("清明时节雨纷纷,\n路上行人欲断魂。");         // 错误写法-直接换行        console.log("清明时节雨纷纷,        路上行人欲断魂。");                 // 缩紧\t        console.log("\t清明时节雨纷纷,路上行人欲断魂。");         // 错误写法-直接空格缩紧        console.log("  清明时节雨纷纷,路上行人欲断魂。");         // 转为普通字符        console.log("这是一个\"字符串\"#%^&");                        console.log("C:\\Users\\admin\\Desktop\\code");        </script> 复制代码

变量

  • 变量(variables) 是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据。

  • 变量相当于一个容器,内部可以存储任意类型的数据,使用变量时,用的是内部存储的数据。

  • 使用变量可以方便的获取或者修改内存中的数据。

变量声明

  • 变量声明又叫做定义变量、创建变量。

  • 变量在使用前,必须先有定义,如果没有定义,会出现引用错误。

  • 定义方法: 使用一个 var 的关键字进行定义,后面必须加一个空格,空格后面自定义变量名。

  <script>     // 使用变量a未定义     console.log(a);   </script>     Uncaught ReferenceError: a is not defined    未捕获的 ReferenceError:a 未定义 复制代码

  <script>      // 先定义变量      var a;      var name;      var n1;      var o_o;      var 2r;     数字不能作为开头   Uncaught SyntaxError: Invalid or unexpected token      var var;    var 是关键字      Uncaught SyntaxError: Unexpected token 'var'      // 驼峰命名法      var userName;      var userPassword;    </script> 复制代码

变量的命名规则和规范

规则 - 必须遵守的,不遵守会报错       - 由字母、数字、下划线、$ 符号组成,`不能以数字开头`。       - `字母区分大小写`,A 和 a 表示不同。       - `不能是关键字和保留字`,关键字指的是js中有特殊功能的小词语,比如 var、for 等;       - 保留字指的是现在没有特殊功能,但是将来新语法中有可能作为关键字使用。        规范 - 建议遵守的,不遵守不会报错       - 变量名必须有意义       - 遵守`驼峰命名法`。多个单词组合而成的,第一个单词首字母小写,后面单词的首字母需要大写。       例如:userName、userPassword 复制代码

变量赋值

- 变量定义之后,初始时没有进行赋值,内部有一个默认存储的值叫 undefined(未定义),    表示变量内部未赋值,可以存储数据了。 - 变量赋值的方式:通过等号 = 赋值,等号右边的值赋值给左边的变量。 - 注意:书写时,等号 = 两侧习惯书写一个空格。 复制代码

<script>        // 定义变量        var a;        // 使用变量        console.log(a);        控制台显示变量-初始值undifined                var a;        // 变量赋值        a = 1;        // 使用变量        console.log(a);        控制台显示变量-1 </script>     复制代码

变量赋值的情况1:

  • 变量赋值时: 内部可以存储任意类型的数据,甚至是一个变量。赋值过程中,等号右侧的 变量使用的是存储的数据。

  • 等号左变右不变。

<script>         // 定义变量        var a;        // 变量赋值        a = 1;        var b;        b = a; //a 在参与给 b 赋值的过程中,相当于在使用 a 变量,用的就是内部存储的数据        // 使用这个变量        console.log(a);        console.log(b);                         // 定义变量        var a;        // 变量赋值        a = 1;        var b;        b = a + 1;  //变量参与赋值,等号左变右不变        // 使用这个变量        console.log(a);        console.log(b); </script>   复制代码

变量赋值的情况2:

  • 变量的赋初值过程可以与声明过程写在一起。

<script>          a = "hello";        console.log(a); </script>   复制代码

变量赋值的情况3:

  • 变量内部的值,可以通过多次赋值的方法,进行更改。

  • 变量一次定义,可以多次等号赋值。

<script>                  // 变量定义时,同时赋初始值        var a = 2;        // 通过多次赋值的方式改变内部的数据        a = "hello";        a = a + 2        console.log(a); </script>   复制代码

变量赋值的情况4:

一个关键字 var 可以同时定义多个变量,并且都赋初值。多个变量之间用逗号进行分隔,最 后一个变量后面使用分号进行结尾。

<script>               // 一个 var 关键字可以同时定义多个变量     var a = 1,     b = 2,     c = 3;     console.log(a + b + c); </script>   复制代码

数据类型

简单数据类型

    - Number     数字类型     - String     字符串类型     - undefined  undefined类型     - Boolean    布尔类型     - null       null类型       另外,还有复杂数据类型     - Object    对象类型,后期课程详细介绍 复制代码

Number 类型
  • 数字类型,不区分整数、浮点数、特殊值,都是 Number 类型。

String 类型
  • 字符串类型,所有的字符串都是 String 类型。

Boolean 类型
  • Boolean 字面量: 只有 true 和 false 两个字面量的值,必须是小写字母。

  • 计算机内部存储:true为1,false为0

Undifined 类型
  • undefined本身是一个数据,表示未定义

  • 变量只声明的时候值默认是 undefined。

Null 类型
  • null本身是一个数据。

  • 从逻辑角度,null 值表示一个空对象指针

  • 如果定义的变量准备在将来用于保存对象,最好将该变量初始化为 null。

检测数据类型

  • 使用 typeof 的方法进行数据检测。

  • 检测方式: 在 typeof后面加小括号 () 执行,将要检测的数据放在小括号内部。

<script>       //“直接写只是返回一个结果,但这个结果本身不具备输出语句的功能”       (typeof(2));              // 检测字面量的数据类型       console.log(typeof(2));              Number       console.log(typeof(2.4));            Number       console.log(typeof(Infinity));       Number       console.log(typeof(NaN));            Number       console.log(typeof("字符串"));        String       console.log(typeof(undefined));      Undifined       console.log(typeof(true));           Boolean       console.log(typeof(false));          Boolean       console.log(typeof(null));           object          </script> 复制代码

  • 也可以将 typeof 作为关键字,后面加空格,空格后添加数据的方式,检测数据。

 <script>         console.log(typeof 67);             Number       // 推荐使用带( )       console.log(typeof(67 + 78));       Number              // 先检测出来「typeof 67」是Number       console.log(typeof 67 + 78);        Number78 </script> 复制代码

变量的数据类型

  • JavaScript语言是一门动态类型的语言,变量并没有一个单独的数据类型,而是会随着内部存储数据的变化,数据类型也会发生变化。

  • 变量的数据类型,与内部存储数据有关。

  • 将来使用变量时,需要知道内部存储的数据是什么类型,避免程序出错。

<script>     // 检测变量的数据类型     // 定义变量     var a = 1;     console.log(typeof(a));        number     // 第二次赋值     a = true;     console.log(typeof(a));        boolean   </script> 复制代码

数据类型转换-toString() 方法

如何使用谷歌浏览器控制台,快速的查看数据类型?
字符串的颜色是黑色的, 数值类型是蓝色的,  布尔类型也是蓝色的,  undefined和null是灰色

  • 数据.toString() 方法

  • String(数据) 方法,有些值没有toString(),这个时候可以使用String()。比如:number undefined和null

<script>     // 转字符串 toString()      console.log(true.toString());          // 转字符串 String()      console.log(String(23));     console.log(String(undefined));     console.log(String(null));  </script> 复制代码

  • +号拼接字符串方式

    • num + "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串。

    • 两边只要有一个是字符串,那么 + 就是字符串拼接功能

    • 两边如果都是数字,那么就是算术功能

<script>      // 12     console.log("1" + 2);      // 加一个""空字符串,也会都变成字符串数据类型     console.log(true + "");         console.log(23 + "");  </script> 复制代码

数据类型转换-Number(数据)方法
  • 转型函数Number()可以用于任何数据类型,将其他数据类型转为数字。

  • 字符串:纯数字字符串转为对应数字,空字符串和空白字符串转为 0 ,非空非纯数字字符串转为 NaN。

  • 布尔值:true 转为 1,false 转为 0。

  • undefined:转为 NaN。

  • null:转为 0

<script>     // 转数字     console.log(Number("123"));          123     console.log(Number(""));             0     console.log(Number("     "));        0     console.log(Number("123abc"));       123abc     console.log(Number(true));           1     console.log(Number(false));          0     console.log(Number(undefined));      NAN     console.log(Number(null));           0  </script> 复制代码

parseInt() 方法:字符串转整数方法
  • 作用:第一,对浮点数进行取整操作;第二,将字符串转为整数数字。

    • 对数字取整功能,直接舍弃小数部分,只保留整数。

    • 将字符串转为整数数字,也包含取整功能。

    • 字符串中,必须是纯数字字符串或者数字字符开头的字符串,才能转换为正常数字,且只取整数部分, 如果不是数字打头的字符串,会转换为 NaN。

<script>     // 字符串转整数     console.log(parseInt(23.45));             23     console.log(parseInt("123.34"));          123     console.log(parseInt("123.34abc"));       123     console.log(parseInt("a123.34abc"));      NAN     console.log(parseInt(""));                NAN     console.log(parseInt("   "));             NAN  </script> 复制代码

parseFloat() 方法:字符串转浮点数方法
  • 作用:将字符串转为浮点数数字。

    • 对数字取整功能,直接舍弃小数部分,只保留整数。

    • 要求:满足浮点数数字字符必须在字符串开始,如果不在开始返回值都是NaN。

<script>     // 字符串转浮点数     console.log(parseFloat("123.34"));        123.34     console.log(parseFloat("123.34abc"));     123.34     console.log(parseFloat("a123.34abc"));    123.34     console.log(parseInt("a123.34abc"));      NAN     console.log(parseInt(""));                NAN     console.log(parseInt("   "));             NAN  </script> 复制代码

应用
  • 工作中,利用变量接收 prompt() 语句返回的用户输入的数据,检测数据类型后,得到的是 字符串类型。

  • 如果想要获取的是数字类型的数据,则需要先将得到的字符串转数字,避免出现字符串参 与数学加法运算等。

<script>         // prompt 赋值-语句可以接受到用户输入的数据,可以存储到变量num中         var num = prompt("请输入一个10以内的数字");                // 对变量进行调用         console.log(num);         // 对num进行检测(语句得到的结果,是字符串类型的数据)         console.log(typeof num);                         例:用户输入5,则console显示5 string                       // 如果是想作为纯数字参与程序,最好进行数据转换,否则就是连字符         var num = prompt("请输入一个10以内的数字");         num = parseInt(num);         console.log(num);                      console.log(typeof num);                   例:用户输入5,则console显示5 number                           // 变量num变成数字类型,就可以进行运算         var num = prompt("请输入一个10以内的数字");         num = parseInt(num);         console.log(num + 5);                   console.log(typeof num);                  例:用户输入6,则console显示11 number                           // 变量num没有改类型         var num = prompt("请输入一个10以内的数字");         console.log(num + 5);                  console.log(typeof num);                  例:用户输入65,则console显示65 string                           // 化简写法         var num = parseInt(prompt("请输入一个10以内的数字"));         console.log(num + 4);  </script> 复制代码

数据类型转换-Boolean(数据)方法
  • 转型函数 Boolean() 可以用于任何数据类型,将其他数据类型转为布尔类型的值。

  • 转为 false : NaN、0、 “”空字符串、null(空对象)、undefined

  • 转为 true : 非0 非NaN数字、非空字符串

<script>        // 转布尔类型         console.log(Boolean(NaN));           false        console.log(Boolean(0));             false        console.log(Boolean(""));            false        console.log(Boolean(null));          false        console.log(Boolean(undefined));     false                console.log(Boolean("abc"));         true        console.log(Boolean("    "));        true        console.log(Boolean(45));            true        console.log(Boolean(Infinity));      true  </script>


作者:文盲
链接:https://juejin.cn/post/7042202904303779871

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐