JavaScript数据类型

本文详细介绍了JavaScript中的数据类型概念,包括为什么需要数据类型、变量的数据类型(弱类型和动态类型)、基本数据类型(如Number、String、Boolean等)和引用数据类型,以及如何检测和转换不同数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.数据类型的简介

1.1为什么需要数据类型

1.2变量的数据类型

1.2.1弱类型

1.2.2动态类型

2.数据类型的分类

2.1基本数据类型(简单数据类型)

2.1.1 Number数字类型

2.1.2 String字符串类型

2.1.3 Boolean布尔类型

2.1.4 Undefined未定义类型

2.1.5 Null空类型

2.1.6 Symbol

 2.2引用数据类型(复杂数据类型)

3.检测变量的数据类型

3.1检测变量的数据类型

 3.2字面量

4.数据类型转换

4.1其他类型转Number

4.2其他类型转String

 4.3其他类型转Boolean


1.数据类型的简介

1.1为什么需要数据类型

在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。

简单来说,数据类型就是数据的类别型号。比如姓名“张三”,年龄18,这些数据的类型是不一样的。

1.2变量的数据类型

变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript 是一种弱类型动态类型的动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。

1.2.1弱类型

弱类型:这意味着当操作涉及不匹配的类型时,它允许隐式类型转换,而不是抛出类型错误。

var a = 42; // a现在是一个数值
var res = a + "1"; //JavaScript将a强制转换为字符串,将其与另一个操作数连接起来
console.log(res); // 421

1.2.2动态类型

动态类型:JavaScript 中的变量与任何特定值类型没有任何关联,任何变量都可以被赋予(和重新赋予)各种类型的值

var a = 42; // a 现在是一个数值
a = "bar"; // a 现在是一个字符串
a = true; // a 现在是一个布尔值

2.数据类型的分类

2.1基本数据类型(简单数据类型)

2.1.1 Number数字类型

  • 既可以用来保存整数值,也可以用来保存小数(浮点数)。Number对象是一个包装对象,使用时,数字相关的不需要转对象,就能使用数字对象的属性和方法。
    var a=123;//整数
    var a=123.23;//小数
  • 属性

    Number.MAX_VALUE1.79769e+308 最大值
    Number.MIN_VALUE5e-324 最小值>0
    Number.NEGATIVE_INFINITY-Infinity 无穷小
    Number.POSITIVE_INFINITYInfinity 无穷大
    Number.NaNNaN  一个特殊的值,它是数字类型
  •  方法
    数字.toFixed(n) 保留n位小数
    数字.toString(进制)十进制转为其他进制
    Number.isNaN(参数);判断传递的值是否为 NaN,并且检查其类型是否为 Number
    如果值为 NaN 且类型为 Number,则返回 true,否则返回 false。
  • 函数
    isNaN(参数)    全局函数
    作用判断一个参数是否为非数字值
    结果非数字值则返回 true是数字值返回false
  • 三个特殊的值
    NaN(not a number)不是一个数,是一个特殊的值
    但是是一个数字类型*****
    Infinity无穷大
  •  进制
    二进制0  1
    八进制0~7    0
    十进制0~9
    十六进制

    0~9  A~F或a~f   0x

2.1.2 String字符串类型

  • 字符串型可以是引号中的任意文本,其语法为 双引号 "" 和 单引号''。因为 HTML 标签里面的属性使用的是双引号,JS 这里我们更推荐使用单引号。

  • 字符串引号的嵌套

    • JS 可以用单引号嵌套双引号 ,或者用双引号嵌套单引号 (外双内单,外单内双)。单套单,双套双会报错

      var str='hello "world"'//单套双 可以使用
      var str1="hello 'world'"//双套单 可以使用
      var str2="hello "world""//双套双 报错 用转义字符\解决
      var str3='hello 'world''//单套单 报错 用转义字符\解决
    • 引号

      引号类型特点
      单引号' ' 双引号" "换行会报错,变量不能写在引号内
      反引号换行不报错,里面的变量需要解析${变量}
  • 字符串转义符

    • 类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。转义符都是 \ 开头的,常用的转义符及其说明如下:

      转义符解释说明
      \n换行符,n是newline的意思
      \\斜杠\
      \'' 单引号
      \"" 双引号
      \ttab 缩进
      \b空格,b是blank的意思
  •  字符串的长度
    • 字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的 length 属性可以获取整个字符串的长度。

      var str='hello';
      console.log(str);//5
  •  字符串拼接
    • 多个字符串之间可以使用 + 进行拼接,其拼接方式为 字符串 + 任何类型 = 拼接之后的新字符串
    • 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
      //1 字符串"相加"
      console.log('hello'+' '+'world');//hello world
      //2 数值字符串"相加"
      console.log('100'+'100');//100100
      //3 数值字符串+数值
      console.log('20'+10);//2010

2.1.3 Boolean布尔类型

  • 表示一个逻辑实体并且包括两个值:true和flase,其中 true 表示真(对),而 false 表示假(错)。布尔型和数字型相加的时候, true 的值为 1 ,false 的值为 0。
    console.log(true + 1);// 2
    console.log(false + 1);// 1
  • 布尔值通常用于条件运算,包括三元运算符、if...else、while等。

2.1.4 Undefined未定义类型

  • 一个声明后没有被赋值的变量会有一个默认值 undefined ( 如果进行相连或者相加时,注意结果)

    var v; 
    console.log(v);// undefined
    console.log('你好' + v);// 你好undefined
    console.log(11 + v);// NaN
    console.log(true + v);//NaN

2.1.5 Null空类型

  • 一个声明变量给 null 值,里面存的值为空

    var b = null;
    console.log('你好' + b);//你好null
    console.log(11 + b);//11
    console.log(true + b);//1

2.1.6 Symbol

  • ES6 引入了一种新的原始数据类型,表示独一无二的值。

 2.2引用数据类型(复杂数据类型)

  • Array  数组
  • Date  日期
  • Function  函数
  • Object  对象
  • RegExp  正则

3.检测变量的数据类型

3.1检测变量的数据类型

  • typeof 可用来获取检测变量的数据类型
    var num = 18;
    console.log(typeof num);//结果 "number"
  •  不同数据类型的返回值
    类型例子结果
    Numbertypeof  15'number'
    Stringtypeof 'hello''string'
    Booleantypeof true'boolean'
    Undefinedtypeof undefined'undefined'
    Nulltypeof null'object' *****

 3.2字面量

  • 在 JavaScript 中,你可以使用各种字面量。这些字面量是脚本中按字面意思给出的固定的值,而不是变量。
    分类解释举例
    数字字面量包括多种基数的整数字面量和以 10 为基数的浮点数字面量10、12.2
    字符串字面量字符串字面量是由双引号(")对或单引号(')括起来的零个或多个字符。字符串被限定在同种引号之间;也即,必须是成对单引号或成对双引号。

    '1234'、'hello'

    '你好'

    布尔字面量布尔类型有两种字面量true、false

            除以上三种还有:数组字面量、对象字面量、RegExp字面量,这里先不总结


4.数据类型转换

4.1其他类型转Number

  • 强制转换      
    • Number(参数)
      • 字符串转数字
        var str='123';
        str=Number(str);
        console.log(str,typeof str);//123 'number'
        
        var str1='123hello';
        str1=Number(str1);
        console.log(str1,typeof str1);//NaN 'number'
        
        var str2='hel123hello';
        str2=Number(str2);
        console.log(str2,typeof str2);//NaN 'number'
        
        var str3='';//或var str3='   ';
        str3=Number(str3);
        console.log(str3,typeof str3);//0 'number'
      • Boolean转数字
        var flag=true;
        flag=Number(flag);
        console.log(flag,typeof flag);//1 'number'
        
        var flag1=false;
        flag1=Number(flag1);
        console.log(flag1,typeof flag1);//0 'number'
      • Undefined转数字
        var a;
        a=Number(a);
        consloe.log(a,typeof a);//NaN 'number'
      • Null转数字
        var a1=null;
        a1=Number(a1);
        consloe.log(a1,typeof a1);//0 'number'
    • parseInt(参数)与parseFloat(参数)
      • 纯数字字符串或者开头是数字的字符串
        //parseInt
        var str='123';
        str=parseInt(str);
        console.log(str,typeof str);//123 'number'
        
        //parseFloat
        var str1='123.15';
        str1=parseFloat(str1);
        console.log(str1,typeof str1);//123.15 'number'
        
        //parseInt
        var str='123hello';
        str=parseInt(str);
        console.log(str,typeof str);//123 'number'
        
        //parseFloat
        var str1='123.15hello';
        str1=parseFloat(str1);
        console.log(str1,typeof str1);//123.15 'number'
      • 除以上两种,其他都为NaN
        //parseInt
        var str='qwe123hello';
        str=parseInt(str);
        console.log(str,typeof str);//NaN 'number'
        
        //parseFloat
        var str1='qwe123.15hello';
        str1=parseFloat(str1);
        console.log(str1,typeof str1);//NaN 'number'
  • 隐式转换
    • 利用算数运算(+,-,*,/)隐式转换为数值型(只适用于纯数字字符串)
      var num='123';
      num=+num;
      console.log(num,typeof num);//123 'number'

      同理也可以使用 '123'-0,'123'*1,'123'/1

4.2其他类型转String

  • 强制转换
    • String(参数)函数   所有都可用
      var num=123;
      num=String(num);
      console.log(num,typeof num);//123 string
      
      var num=true;
      num=String(num);
      console.log(num,typeof num);//true string
      
      var num=null;
      num=String(num);
      console.log(num,typeof num);//null string
    • 参数.toString() 方法  null和undefined没有此方法
      var num=789;
      num=num.toString();
      console.log(num,typeof num);//789 string
      
      //不合法
      var a;//var a=null;
      a=a.toString();//报错 undefined和null没有.toString()方法
      console.log(a,typeof a);
  •  隐式转换
    • 拼空串
      • 123+''——'123'
        true+''——'true'

 4.3其他类型转Boolean

  • Boolean(参数)
    • 返回值是true、false
    • 只有六个值转换后为真,其他都为假
      console.log(Boolean('')); // false 
      console.log(Boolean(0)); // false 
      console.log(Boolean(NaN)); // false 
      console.log(Boolean(null)); // false 
      console.log(Boolean(undefined)); // false
      console.log(Boolean(false)); // false

      '' 空字符串、0、undefined、null、NaN、false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值