JavaScript的数据类型

2023-11-15

一、 JavaScript里的数据类型是什么?

百度里的数据类型定义

数据类型在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。

生活中的延伸

从生活中出发: 在日常生活中,描述不同的东西,有不同的一些单位。 实际上,编程也是要解决我们生活中的问题,在程序中,如何描述这些内容呢。针对不同的内容,根据其特性,需要用不同的单位(类型)加以描述,这就是数据类型的概念。
比如,描述人的时候:
姓名:张三
年龄:18
性别:男
职业:法外狂徒

为什么要对数据进行分类

一句话:方便管理和操作,符合现实需求


二、在JavaScript中有哪些数据类型?

在js中我们把数据类型分成了两大类:

1.基本数据类型:
   数值(数字):number
   字符串:string
   命名未赋值:undefined
   布尔类型:Boolean
   空类型:null

2.复杂数据类型:
又称引用数据类型 在存储变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过new关键字创建的对象(系统对象、自定义对象),如Object、Array、Data等

typeof 操作符

语法: typeof(需要检测的信息);


由于js中的’变量’是’松散类型’的,所以它提供了一种检测当前变量的数据类型的方法,也就是’typeof’关键字
var str= '大可爱';
//写法一
console.log(typeof(str))//string
//写法二
console.log(typeof str )//string


三、基本数据类型

1.Number类型

作用:用来表示数字的 ,任何数字都可以使用数值类型。比如商品价格、年份、年龄等。

Number类型包含整数和浮点数(浮点数,数值必须包含一个小数点,且小数点后面至少有一位数字,需要大于0)两种值。
   整数:var a = 10;
   浮点数:var b = 13.14;

number还有一种特殊的样式:

‘特殊的NaN’
NaN:非数字类型。
特点:
① 涉及到的 任何关于NaN的操作,都会返回NaN
② NaN不等于自身。
注意 NaN不是一个数值,但他是number类型;

var num = NaN;
 var num1 = NaN; 
 var num2 = 1; 
 var num3 = 2;
//1)NaN表示一个本来要返回数字,但是由于某种原因,没有返回成功,就用NaN表示。
 console.log(typeof(num));//NaN
//2)NaN与任何值都不等,包括其本身; 
console.log(num == num1)//NaN 
//3) NaN与其他任意值进行运算,都为NaN;
console.log(num+num2);//NaN


检测参数是否是非数值的:
**isNaN **

isNaN() ‘函数用于检查其参数是否是’非数字值’。
1.如果是数值返回:‘false’;
2.如果是非数值返回:

var  str = '孙行者';
 console.log(isNaN(str ));//true 
 var num = 1; 
 console.log(isNaN(num));//false

= 和 == 区别

//1.'=':赋值
//2.'==':进行对比判断
var num1 = 1;
var num2 = 1;
console.log(num1 == num2);//true

2.String字符串类型

组成:由一系列的字符构成的数据。
写法:引号‘ ’(英文单引号)或“ ”(英文双引号)来表示,
 例如:“张三”
     ‘李四’

字符串的长度

用length来表示,注意:数组的长度使用的也是length
在js中length为属性

字符串的样式

文本字符串类型的数据可以和html的标签联合使用
例如 var text = ”123”+”

特殊转义字符

代码 输出
单引号
" 双引号
\ | 反斜杠
\n 回车
\r 回车
\t 制表
\b 退格符
\f 换页符
\v 垂直制表符
\xNN 由两位十六进制数值NN指定的Latin-1字符
\uNNNN 由四位十六进制数NNNN指定的Unicode字符
\NNN 由一位到三位八进制数(1到337)指定的Latin-1字符。ECMAScript v3不支持,不要使用这种转义序列

3.Boolean类型

该类型只有两个值,truefalse,注意:一般会在判断(条件、循环)等语句中来使用。’ 基本使用如下:
我们有可以使用typeof 运算符来获取布尔值的类型。

var flag = true; 
console.log(flag ); // 检测类型 console.log(typeof(a));//boolean

var flag  = false; 
console.log(flag ); 
console.log(typeof(flag ));//boolean

4.Undefined类型 和 null类型

Undefined类型
undefined:是未定义类型表示一个变量在声明的时候没有初始值,那么它的值就是undefined。

//1、如果一个变量,通过var声明了,但是没有赋值,则会出现如下提示:
var name;
console.log(name);// undefined

//2.检测没有赋值的变量的类型
 console.log(typeof name);//undefined

//3、如果一个变量,没有通过var声明,直接就访问会报错:
//…is not defined

//4.检测没有声明变量的类型
console.log(typeof a);//undefined

Null类型
null类型被看做空对象指针,null类型也是空的对象引用。
作用:当将来需要存储一个对象的时候,可以给其初始值赋为null;


四、复杂数据类型

Object 类型

Object(对象):对象是某个特定引用类型的实例。新对象是使用new操作符后跟一个构造函数来创建的。构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。复杂的数据类型,引用数据类型,一般情况下,对象中包含了多个属性和方法。

var person = new Object();

这行代码创建了Object引用类型的一个新实例。然后把该实例保存在了变量person中。使用的构造函数函数是object,他只为新对象定义了默认的属性和方法。

创建Object(对象)实例的两种方式

  1. 使用构造函数构建对象,new操作符后跟Object 构造函数。

java一个对象创建成功不能动态的添加和删除属性。Java里的对象一共有多少属性由它的构造函数或它的类,不能动态添加或删除。但是JavaScript可以动态添加或删除属性。

var obj = new Object();
obj.name = "lilihuan";	//动态添加name属性
obj.age = 12;	//动态添加age属性

  1. 使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。

对象使用"{}“作为边界,对象是由多个属性(方法是一种特殊的属性)来组成,每个属性之间通过”,“分割,属性名与属性值之间通过”:"分割。属性名可以不使用双引号,当属性名中包含特殊字符一定使用双引号,属性值一般为常量或者具体的值,也可以变量

 var person = {
 	name : "lilihuan",
	age:18,
	gender:"male"
 };

访问对象属性的方法
点访问符

对象名.属性名
obj.name

 中括号访问符

var name = "name";
obj[name]
=>(等价于)
obj["name"]

所有的对象直接或者间接的继承Object,也就是说所有的对象都可以调用Object原型中的方法和属性。

**删除属性**
delete obj.no;

var obj = {
		name:"张三",
		age:18,
		gender:"男",
		career:"法外狂徒"no:123
		}
console.log(obj);//{name:'张三',age:12,gender:'男',career:'法外狂徒',no:123}
delete obk.no;
console.log(obj);//{name:'张三',age:12,gender:'男',career:'法外狂徒'}


## 五、数据类型转换 ### 为什么要数据转换

JavaScript 是弱类型语言,而且JavaScript声明变量的时候并没有预先确定的类型,变量的类型就是其值的类型,也就是说变量当前的类型由其值所决定,夸张点说上一秒种的String,下一秒可能就是个Number类型了,这个过程可能就进行了某些操作发生了强制类型转换。虽然弱类型的这种不需要预先确定类型的特性给我们带来了便利,同时也会给我们带来困扰。

###1. 转布尔类型

Boolean()
可以将任意类型的数据转为布尔类型
语法:Boolean(值) 规则:

 //等于false的:
 //null undefined  ''  0 NaN
// 1.null  
console.log(Boolean(null)); //false

// // 2. 0 
console.log(Boolean(0)); //false

// // 3.''
console.log(Boolean('')); //false

// // 4.undefined
console.log(Boolean(undefined)); //false

// // 5.NaN
console.log(Boolean(NaN)); //false

//等于ture的://数字  非空字符串  一个空对象  一个空数组
 // 1.  123
var a = 123
console.log(Boolean(a));//ture

// // 2.非空字符串
var b = '天很蓝,找一个风很大的地方把我忘了';
console.log(Boolean(b));//ture

// // 3.空的一个对象
var c = {};
console.log(Boolean(c));//ture

// // 4.空数组
var d = [];
console.log(Boolean(d));//ture

2、转字符型

  1. String():可以将任意类型的数据转为字符型
    语法:String(值)
    返回值:转换的内容加引号
var a = 123;
console.log(typeof(a));//number
console.log(a);
console.log(typeof(String(a)));//string

// 2. NaN
var b = NaN;
console.log(typeof(b));//number
console.log(typeof(String(b))); //string

// 3.null
var c = null;
console.log(typeof(c)); //objcet
console.log(typeof(String(c))); //string

// 4.未定义类型的
var d = undefined;
console.log(typeof(d)); //undefined
console.log(typeof(String(d))); //string

// 5.布尔值
var e = true;
console.log(typeof(e)); //Boolean
console.log(typeof(String(e))); //string

  1. toString():除了null和undefined之外的数据都可用toString转换
    语法:值.toString()
var num = 123 ;
num.toString() //'123';

var str = true;
str.toString();// 'ture';

//null和undefined用toString转会报错

var res = null;
res.toString() //Cannot read property , toString’of null

var res2 = undefined;
res2.toString() //TypeError: Cannot read property " toString’of undefined

  1. 隐式转换
    语法:值 + “”;
123 + ''; //'123'
null + '';//'null'
'' + undefined; //'undefined'

3、转数值型

Number();可以将任意类型数据转为数值型;
规则如下:


//1: null 转 number:  
 Number(null)// 0

//2: Undefined转number:
console.log(Number(undefined)) //NaN
var a;
console.log(Number(a))//NaN

//3:布尔 转 number 结果:
true = number //1
console.log(Number(ture)) //1

false = number // 0
console.log(Number(false)) //0

//4:空字符串 转 number 
console.log(Number(' ')) //0

//5:非空字符串 转 number 规则
//如果字符串里 的内容全部是有效数字,那么就转成对应的有效数字,否则,转number后就是NaN.
var arr = '123';
console.log(Number(arr)); //123

var arr1 = '12.34'
console.log(Number(arr1)); //12.34

var arr2 = '12.31.54';
console.log(Number(arr2)); //NaN

var arr3 = '123nx';
console.log(Number(arr3)); //NaN

var arr4 = '你好';
console.log(Number(arr4)); //NaN

//注意:数字前面有零的就省略0
 var arr5 = '012138';
console.log(Number(arr5)); //12138  注意;如果前面有0的化就会默认隐藏掉 

**parseInt()**取整
给浮点小数进行取整
方法:parseInt(值);
注意:

  • 从第一个字符开始转换,如果第一个字符就是非数字,那么得到的一定是NaN,

  • 如果第一个不是非数字,就向后转换,直到遇到一个小数点,或非数字,则停止转换,将前面转面转的内容输出

  • 如果使用parseInt进行转换,他会把字符型转成数字型的,并且取整

 var str1 = '123';
console.log(parseInt(a)); //123

var str2 = '13.14';
console.log(parseInt(b));//12

var str3 = '12.31.14';
console.log(parseInt(c)); //12

var str4 = '你好';
console.log(parseInt(d)); //NaN

var str5 = 'w123';
console.log(parseInt(e)); //NaN

var str6 = '123w';
console.log(parseInt(r)); //123

**parseFloat()**取浮点数
语法:parseFloat();

  • 从第一个字符开始转换,如果第一个字符就是非数字,那么得到的一定是NaN,
  • 如果第一个是数字,就向后转换,直到遇到一个小数点,或非数字,则停止转换,将前面转面转的内容输出
var str1 = '123';
console.log(parseFloat(a)); //123

var str2 = '12.12';
console.log(parseFloat(b)); //12.12

var str3 = '12.31.14';
console.log(parseFloat(c));//12.31

var str4 = '你好';
console.log(parseFloat(d)); //NaN

var str5 = 'w12.31'
console.log(parseFloat(e));// NaN

var str6 = '12.31w';
console.log(parseFloat(r));//12.31

isNaN() 检测是否是非数字
语法:isNaN(检测值)
返回值:非数字—>true 数字—>false;
说明:isNaN();会发生一个隐式转换,会尝试着将检测值转为number;然后进行判断


console.1og (isNaN(123)) ://false;
console.1og (isNaN("123a")) ://true:
console. log (isNaN(true)) ://false

小结

转布尔的方法:Boolean() ;转为false的有: 0 NaN ‘’ null undefined;
转字符串的方法有 String() toString() ;注意null和undefined不能用toString转
转数值:Number() ,parseInt(),parseFloat() 注意转换规则
isNaN():检测是否是非数字 如果是数字返回 false ;如果是非数字,返回true;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript的数据类型 的相关文章

随机推荐

  • 父页面调用easyui datagrid

    opener tt datagrid insertRow index 0 row name name
  • 关于kerberos使用keytab安全认证连接hive票据过期的问题及解决方法。

    关于kerberos使用keytab安全认证连接hive票据过期的问题及解决方法 问题描述 解决方法 问题描述 本人在使用HiveStreaming的过程中 使用kerberos keytab进行安全验证 程序会保持长期连接 hive jd
  • 动手强化学习(六):DQN 算法

    动手强化学习 六 DQN 算法 1 简介 2 CartPole 环境 3 DQN 3 1 经验回放 3 2 目标网络 4 DQN 代码实践 5 以图像为输入的 DQN 算法 6 小结 文章转于 伯禹学习平台 动手学强化学习 强推 本文所有代
  • 5.1-集成学习

    文章目录 集成框架 Framework of Ensemble 一 Ensemble Bagging 1 1 决策树 Decision Tree 1 2 随机森林 Random Forest 二 Ensemble Boosting 2 1
  • 大模型的普及与应用,数据保护非常重要

    随着AI技术的不断发展和应用 大模型已经成为了AI领域中的一个热门话题 随着大模型的应用越来越广泛 保护隐私和数据安全的重要性也越来越突出 隐私和数据安全不仅仅是技术要求 更是对个人权利和社会发展的必然需求 在AI大模型的应用中 数据是非常
  • ROS机械臂正逆运动学

    这里做一个六轴机械臂用于正逆运动学实验 这里其实一共只有3轴 只有3轴位置没有姿态 所以urdf文件里我在末端做了3个虚拟关节 以便将kdl的frame能够填满 使得齐次坐标变换是规则的 1 urdf建模
  • I2C学习

    参考链接 I2C基础知识学习 主机向从机写数据的过程 1 start信号 2 从机地址 7位地址 3 读写位 一位读写 R W 位 0 写 1 读 4 等待从机应答信号 5 当主机收到从机的应答信号 然后发送访问的从机寄存器地址 6 再次等
  • HTTP协议各个版本之间区别?

    HTTP协议各个版本之间区别 1 区别 2 持久连接 3 管线化 4 持久连接和管线化区别 5 分块传输编码 6 二进制协议 7 多路复用 7 1多路复用与管线话和持久连接的区别 7 2多路复用是如何实现在同一个TCP连接上同时发送多个HT
  • 如何在DSP CCS开发环境中添加VLIB图像处理的库

    CCS Version 5 5 0 00077 VLIB VLIB Function Reference Release 3 3 2 0
  • IDEA使用手册之Java Web项目 debug调试方法

    点击图中按钮开始运行web工程 启动成功 设置断点 通过浏览器发送请求 请求发送之后会自动跳到断点处 并且在断点之前会有数据结果显示 按F8 在 Debug 模式下 进入下一步 如果当前行断点是一个方法 则不进入当前方法体内 跳到下一条执行
  • IDEA插件系列(11):Translation插件——翻译插件

    1 插件介绍 可以翻译词汇 语句 十分方便 2 安装方式 第一种安装方式是使用IDEA下载插件进行安装 第二种方式是使用离线插件进行安装 插件下载地址 http plugins jetbrains com plugin 8579 trans
  • vscode 方法代码块的注释生成方法

    1 安装插件 Document This 2 将光标放置于function上面 快捷键是 Ctrl Alt D 加 Ctrl Alt D 注 vue里的method方法中的function用这个不行 单独的一个文件中可以 类似下面的代码 获
  • ElasticSearch7.6入门学习笔记

    在学习ElasticSearch之前 先简单了解一下Lucene Doug Cutting开发 是apache软件基金会4 jakarta项目组的一个子项目 是一个开放源代码的全文检索引擎工具包 不是一个完整的全文检索引擎 而是一个全文检索
  • ApiPost使用教程

    怎样先新建一个简单的接口 首先打开ApiPost界面点击新建 选择POST请求 输入url 请求参数选择json 输入对应的请求参数 点击发送 就可以请求成功啦 当然我们点击右侧保存 就可以保存该接口 并且左侧可以出现该保存的结果目录 如何
  • 我用js写了一个,除夕烟花秀和春节随机祝福语

    项目截图 进入后的界面 点击按钮 点击之后的动画 烟花结束后的界面 代码实现 涉及的技术 HTML5多媒体 CSS定位 动画 js面向对象 Jquery动画 事件 首先来看HTML代码
  • [原创]脚本小技巧:awk变量传递到shell变量

    简介 常用网名 猪头三 出生日期 1981 XX XX 个人网站 https www x86asm org QQ交流 643439947 编程生涯 2001年 至今 共20年 职业生涯 18年 开发语言 C C 80x86ASM PHP P
  • MySQL数据库的性能优化及自动化运维与Mysql高并发优化详细教程

    首先 我们来看看DBA的具体工作 我觉得 DBA 真的很忙 备份和恢复 监控状态 集群搭建与扩容 数据迁移和高可用 这是我们 DBA 的功能 了解这些功能以后要对体系结构有更加深入的了解 你不知道怎么处理这些故障和投诉的事情 所以我们要去了
  • 剑指offer 学习笔记 最长不含重复字符的子字符串

    面试题48 最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串 计算该最长子字符串的长度 假设字符只包含 a z 的字符 如在字符串 arabcacfr 中 最长的不含重复字符的子字符串是 acfr 长度为4 我
  • 串行接口(UART)------verilog实现串口接收模块

    一 串口基本概念 串行接口 Serial port 主要用于串行式逐位数据传输 常见的有一般计算机应用的RS 232 使用 25 针或 9 针连接器 和工业计算机应用的半双工RS 485与全双工RS 422 维基百科 按照电气标准划分 串口
  • JavaScript的数据类型

    一 JavaScript里的数据类型是什么 百度里的数据类型定义 数据类型在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称 生活中的延伸 从生活中出发 在日常生活中 描述不同的东西 有不同的一些单位 实际上