javaScript数据类型及相互转换

2.2、JS数据类型

2.2.1、数据类型

2.2.1.1、为什么需要数据类型

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

2.2.1.2、变量的数据类型

JS是一种弱类型或者动态语言。这就意味着不用提前声明变量的类型,在程序运行过程中,变量的数据类型是根据等号右边的值来自动确定的。

JS拥有动态类型,同时也意味着相同的变量可用作不同的类型

2.2.1.3、数据类型的分类

简单(一般)数据类型(Number、String、Boolean、Udefined、Null、Symbol)

复杂(引用)数据类型(Object,Function、Array、Date、RegExp、Math·····)

后续还会再增加别的数据类型....

面试题:js的数据类型有哪些?

2.2.2、简单数据类型

简单数据类型

解释说明

默认值

Number

数值型,包含整数值和浮点型,如12,1.2

0

Bollean

布尔值类型,true、false,等价于1、0

false

String

字符串类型,如'王二麻',字符串都带引号

'',"",``

Undefined

未定义,例如: var a;此时a=undefined

undefined

Null

空值;例如 :var a=null

null

2.2.2.1、数字型 Number
(1)、数字型进制

常见的进制有二进制、八进制、十进制、十六进制,在JS中,八进制前面加0,十六进制前面加0x

(2)、数字型范围(JS中数值的最大值和最小值)
  • Number.MAX_VALUE //1.7976931348623157e+308

如果使用Number表示的数字超过了最大值,则会返回一个Infinity 表示正无穷

使用typeof 检查infinity也会返回number

  • Number.MIN_VALUE 大于0的最小值 //5e-324
  • NaN 是一个特殊的数字,表示Not A Number, 非数值

使用typeof 检查NaN也会返回number

      var a = 123;a = 456.789; //下面的数值会覆盖上面的var b = 123; //这是数字123console.log(typeof a); //numbera = Number.MAX_VALUE; //最大值// console.log(a)a = Number.MIN_VALUE; //最小值//  console.log(a)a = "abc" * "bcd";//console.log(a); //NaN
(3)、数字型计算
      • 在Js中整数的运算基本可以保证精确
      • 如果使用JS进行浮点元素,可能得到一个不精确的结果
var c = 1 + 2; 
console.log(c);//3var d = 0.1 + 0.2; //如果使用JS进行浮点元素,可能得到一个不精确的结果
console.log(d);//0.30000000000000004
(4)、isNaN()方式

用来判断NaN,并返回一个布尔值,如果判断的是NaN,则返回true,如果判断的不是NaN,则返回false

判断一个值能否被 Number() 合法地转化成数字

 console.log(isNaN(123));//falseconsole.log(isNaN(NaN));//true
(5)、typeof 来检查一个变量的类型,并输出

语法:typeof 变量

检查字符串时,会返回string; 检查数值时,会返回number·····

返回的string、number、boolean等值,这些值的类型是string

2.2.2.2、字符串String
(1)、基本语法

字符串型可以是引号中的任意文本,其语法为双引号""和单引号''、反引号``,一般js中建议用双引号"",js可以用单引号嵌套双引号,或者用双引号嵌套单引号

// 单双引号嵌套var res = '古诗:"锄禾日当午"';console.log(res);
(2)、字符串转义符

转义符都是\开头的,,写在当单双引号里面的,常用的转义符及其说明如下

转义符

解释说明

\n

换行符,n表示newline的意思

\\

斜杠\

\'

'单引号

\"

"双引号

\t

tab缩进

\b

空格,b是blank的意思. ???

//转义字符var str = "hello";str = " \''你好 ";console.log(str,'11');
(3)、字符串长度

字符串是由若干字符组成的,这些字符的数量就是字符串的长度。length属性可以获取整个字符串的长度

(4)、字符串拼接

多个字符串之间可以使用+进行拼接,其拼接方式为字符串+任意类型=拼接新字符串 ;

拼接前会把字符串相加的任意类型转成字符串,再拼接成一个新的字符串;

(5)、字符串拼接变量

字符串和变量拼接,变量不能写在引号里面,需要用加好拼接变量

eg:"你好"+age+"hlleo"

var age = 18;
var str = "我今年18岁了";
str = "我今年" + age + "岁了";
var str4 = `我叫${myName},我今年${age}岁了`;
console.log(str);
2.2.2.3、布尔值 Boolean

布尔值只有两个值,用来做逻辑判断

true -表示真 false -表示假

使用typeof检查一个布尔值时,会返回boolean

当进行数值运算的时候,true为1,false为0

2.2.2.4、未定义 Undefined

Undefined类型的值只有一个,就是undefined

当声明了一个变量,但是并不给变量赋值时,它的值就是undefined

使用typeof检查一个undefined时也会返回undefined

当进行数值运算时,结果为NaN

2.2.2.5、 空值Null

null这个值专门用来表示空的对象

使用typeof检查一个null值时,会返回object

当进行数值运算时,null为0

2.2.2.6、typeof返回值

number,string,boolean,undefined,object

返回值的是string

2.2.3、数据类型转换

使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接进行数值运算,需要将字符串转为数值类型

强制类型转换:指将一个数据类型强制转换为其他的数据类型

通常三种转换

转换为字符串类型

转换为数字型

转换为布尔型

2.2.3.1、转换为字符串类型
(1)、toString()方法

-调用被转换数据类型的toString()方法 语法:变量.toString()

-该方法不会影响到原变量,它会将转换的结果返回 语法:str=变量.toString()

-注意:null和undefined这两个值没有toString的方法,如果调用他们会报错

 var a = 123;//调用a的toString()方法var b = a.toString(); //将a赋值转换结果赋值给b,再检查ba = a.toString(); //也可将a赋值转换结果赋值给a,再检查aconsole.log(typeof a);console.log(a);//    再举例var c = true;c = c.toString();console.log(typeof c);console.log(c);/* var d=null;d=d.toString();console.log(typeof d)//会报错var e=undefined;e=e.toString();console.log(typeof e) */ //会报错
(2)String()

-调用String()函数,并将被转换的数据作为参数传递给函数, 语法:String(变量)

-使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString的方法

但对于null和undefined,就不会调用toString()方法, 它会将null直接转换为"null", 将undefined 直接转换为"undefined"

      a = 789;//调用String()函数,来将a转换为字符串a = String(a);a = null;a = String(a);a = undefined;a = String(a);console.log(a);console.log(typeof a);
(3)拼接字符串(隐式转换)

和字符串拼接的结果都是新字符串,语法:变量+''

  var f=123f=f+''console.log(f,typeof f);
2.2.3.2、转换为数字型(重点)
(1)、 使用Number()函数

字符串-->数字

1:如果是纯数字的字符串,则直接将其转换为数字

2:如果字符串中有非法的数字的内容,则转换为NaN

3:如果字符串是一个空串,或者全是空格的字符串,则转换为0

布尔值--->数字

true--1 false--0

Null --->数字 0

Undefined --->数字 NaN

(2)、parseInt()

可以将一个字符串中的有效的整数取出来,转换为Number,其他类型用parseInt()转换,得到的都是NaN

语法:parseInt(变量)

   a='123px';a=parseInt(a)//调用parseInt()函数,将a转换为Number
(3)、parseFloat()

把一个字符串转换为一个浮点数数值型

语法:parseFloat(变量)

 a='123.345px';a=parseFloat(a);            

注意:如果对非String使用parseFloat()跟parseInt(),它会先将其转换为String,然后再操作 

 a=true;a=parseInt(a);//NaN
(4)、js隐式转换
(5)、正号

利用算术运算 - * / 隐式转换为数值型

a = "123";
a = a - 0;//123
a = a / 1;//123
a = a * 1;//123
console.log(a, typeof a);
2.2.3.3、转换为布尔型

1、Boolean()函数,将其他类型转成布尔值

  • 数字-->布尔 除了0跟NaN是false,其他的都是true
  • 字符串-->布尔 除了空串是false,其余都是true
  • null和undefined都会转换为false
  • 对象会转换为true

2、两次取反

 <script>var a = 123; //truea = -123; //truea = 0; //flasea = NaN; //flasea = Boolean(a); //调用Boolean()函数来将a转换为布尔值a = "false"; //truea = " "; //falsea = null; //falsea = Boolean(a);a = undefinde; //falseconsole.log(typeof a);console.log(a);</script>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15331.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

酥皮点心,味蕾上的享受

甘肃酥皮点心承载着悠久的历史与深厚的文化底蕴。它起源于古老的丝绸之路&#xff0c;在岁月的长河中&#xff0c;经过一代又一代甘肃人的传承与创新&#xff0c;成为了如今令人陶醉的美食。每一块酥皮点心都仿佛在诉说着过去的故事&#xff0c;见证着甘肃大地的变迁与发展。食…

SpringCloud核心组件(三)

文章目录 Nacos 注册中心1. 简介功能1.服务发现和服务健康监测2.动态配置服务3. 动态 DNS 服务4. 服务及其元数据管理 优势设计理念易于使用面向标准高可用方便扩展 部署模式单机模式集群模式 Nacos 生态&#xff1a; 2. 安装 Nacos第一步&#xff1a;拉取镜像第二步&#xff1…

反射、枚举以及lambda表达式

反射、枚举以及lambda表达式 反射定义用途反射基本信息反射相关的类Class类(反射机制的起源)Class类中的相关方法 反射示例获得Class对象的三种方式反射的使用 反射优点和缺点重点总结 枚举的使用背景及定义使用枚举优点缺点枚举和反射总结单例模式 Lambda表达式背景Lambda表达…

Java学习Day60:回家!(ElasticStatic)

1.what is ElasticStatic The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash&#xff08;也称为 ELK Stack&#xff09;。能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。 Elaticsearch&#xff0c;简称…

java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程

文章目录 PC Register堆虚拟机栈方法区(Metaspace元空间双亲委派机制类加载器 类装载的执行过程 PC Register 程序计数器&#xff08;Program Counter Register&#xff09;是 Java 虚拟机&#xff08;JVM&#xff09;中的一个组件&#xff0c;它在 JVM 的内存模型中扮演着非常…

Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…

恶意PDF文档分析记录

0x1 PDF是什么 PDF&#xff08;便携式文件格式&#xff0c;Portable Document Format&#xff09;是由Adobe Systems在1993年用於文件交换所发展出的文件格式。 因为PDF的文件格式性质广泛用于商业办公&#xff0c;引起众多攻击者对其开展技术研究&#xff0c;在一些APT&#…

SpringBoot集成itext导出PDF

添加依赖 <!-- PDF导出 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency><groupId>com.itextpdf</groupId>&l…

不想后悔,混动车这样买

文 | AUTO芯球 作者 | 雷慢 不买一辆混动车&#xff0c; 你永远不知道自己有多抠&#xff01; 我有个跑滴滴的小伙伴&#xff0c; 他说近10年来最后悔的事&#xff0c; 就是没买个纯电续航长点的混动车&#xff0c; 怎么回事呢&#xff0c; 这个小伙伴今年买了辆纯电续航…

第一个C语言程序,带领我们进入C语言的大门!

第一个C语言程序&#xff0c;带领我们进入C语言的大门&#xff01; 我们有两种方式从计算机获得信息&#xff1a;一是看屏幕上的文字、图片、视频等&#xff0c;二是听从喇叭发出来的声音。让喇叭发出声音目前还比较麻烦&#xff0c;我们先来看看如何在屏幕上显示一些文字吧。p…

大模型到底是什么?小白也能看懂的科普贴,让你从大模型入门到大模型精通

&#xff08;图源网络&#xff09; 从去年到今年&#xff0c;大模型、chatGPT等概念和技术越来越火&#xff0c;但是像笔者一样的技术小白一直对大模型是一种似懂非懂的状态。鉴于最近在做基于大模型和Agent的上层AI应用&#xff0c;如若不了解底层概念&#xff0c;始终还是会…

qt QStandardPaths 详解

1、概述 QStandardPaths是Qt框架中的一个类&#xff0c;它提供了一种跨平台的方式来访问标准的位置&#xff0c;如应用程序的数据目录、配置目录、缓存目录、临时文件目录等。这些位置通常是用户特定的&#xff0c;并且遵循操作系统的标准和惯例。通过使用QStandardPaths&…

对node工程进行压力测试与性能分析

在系统上线前&#xff0c;为了看下系统能承受多大的并发和并发下的负载情况&#xff0c;进行了一轮压测。在压测过程中&#xff0c;发现服务器的cpu飚的的非常高&#xff0c;而tps&#xff0c;接口耗时、服务可用等都是正常的&#xff0c;卧槽&#xff0c;这就奇了怪了&#xf…

昆明华厦眼科医院在大观小学开展近视科普教育讲座

为响应全社会对青少年近视防控的号召&#xff0c;昆明华厦眼科医院组织了一场近视科普教育讲座&#xff0c;活动走进大观小学&#xff0c;旨在通过专业的眼科知识普及&#xff0c;提升小学生们对眼健康的认知&#xff0c;培养他们爱眼护眼的意识。讲座结束后还特地为教师群体进…

MPLS基本原理

Multiprotocol Label Switching 多标签交换 前言 MPLS位于TCP/IP协议栈中的链路层和网络层之间,用于向IP层提供连接服务,同时又从链路层达到服务.MPLS以标签交换代替IP转发. MPLS并不是一种业务或者应用,它实际上是一种隧道技术.这种技术不仅支持多种高层协议与业务,而且在一…

《MarsCode:编程领域的智能新势力》

《MarsCode&#xff1a;编程领域的智能新势力》 一、MarsCode 的诞生与发展&#xff08;一&#xff09;逐步崛起的历程&#xff08;二&#xff09;与各方的合作与影响 二、MarsCode 的独特魅力&#xff08;一&#xff09;强大的功能特点&#xff08;二&#xff09;多语言支持与…

PyInstaller未包含预编译引导程序

1 现象 在使用 PyInstaller 打包 Python 应用时&#xff0c;遇到了一个错误&#xff0c;错误信息如下&#xff1a; Fatal error: PyInstaller does not include a pre-compiled bootloader for your platform. For more details and instructions how to build the bootloade…

华为HCIP-openEuler考试内容大纲:备考必看!

华为HCIP-openEuler认证考试作为ICT领域的一项重要技术认证&#xff0c;已经成为越来越多IT从业者追求的目标。无论你是想提升自己的技术能力&#xff0c;还是为了未来的职业发展&#xff0c;HCIP-openEuler都是一个极具价值的认证。那么&#xff0c;如何高效备考&#xff0c;顺…

编程之路,从0开始:知识补充篇

Hello大家好&#xff0c;很高兴我们又见面了&#xff01; 给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 这一篇我们来补充一下在之前篇目没讲到的知识&#xff0c;并结合一些码友的私信提问和我在编程中遇到的问题&#xff0c;做一些易错点或易混点的讲解。 …

免费PC游戏加速器--慕讯公益加速器

百度网盘链接&#xff1a; 慕讯公益加速器 提取码: y54m 官网&#xff1a; 慕讯公益加速器 优点&#xff1a; 1.不像其他加速器假免费&#xff0c;但支持的话可以向软件捐款 2.加速游戏很全&#xff08;Nikke等游戏都可以选择它&#xff09;&#xff0c;可以自由选择节点 …