第五节JavaScript typeof、类型转换与正则表达式

一、typeof、null和undefined

1、typeof操作符

使用typeof操作符来检测变量的数据类型。

实例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JavaScript基础知识学习</title>
	</head>
	<body>
		<p> typeof 操作符返回变量或表达式的类型。</p>
		<p id="demo"></p>
		<script>
			document.getElementById("demo").innerHTML =
				typeof null + "<br>" +
				typeof NaN + "<br>" +
				typeof undefined + "<br>" +
				typeof "john" + "<br>" +
				typeof 3.14 + "<br>" +
				typeof false + "<br>" +
				typeof [1, 2, 3, 4] + "<br>" +
				typeof {
					name: 'john',
					age: 34
				};
		</script>
	</body>
</html>

输出结果:

注意:

  1. 在JavaScript中,数组是一种特殊的对象类型,因此typeof []返回object。
  2. typeof null会返回“object”,这是一个历史遗留问题,实际上null是一个空或不存在的值,不是一个对象。
  3. typeof NaN会返回“number”,这是因为NaN是一个特殊的数值类型,表示Not a Number(不是一个数字)。

2、null

在JavaScript中,null表示“什么都没有”。

null是一个特殊类型,表示一个空对象引用。

var person = null;   // 值为 null(空), 但类型为对象

3、undefined 

在 JavaScript 中, undefined 是一个没有设置值的变量。

typeof 一个没有值的变量会返回 undefined。

var person;  // 值为 undefined(空), 类型是undefined

var person = undefined;  // 值为 undefined, 类型是undefined

任何变量都可以通过设置值为 undefined 来清空。

4、undefined 和 null 的区别

实例:

<body>

<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
	typeof undefined + "<br>" +
	typeof null + "<br>" +
	(null === undefined) + "<br>" +
	(null == undefined);
</script>

</body>

输出结果:

备注:null 和 undefined 的值相等,但类型不等。

二、JavaScript类型转换

1、数据类型

在JavaScript中有6种不同的数据类型:

  1. string
  2. number
  3. boolean
  4. object
  5. function
  6. symbol

3种对象类型:

  1. Object
  2. Date
  3. Array

2个不包含任何值的数据类型:

  1. null
  2. undefined

示例:可以使用typeof操作符来查看JavaScript变量的数据类型

注意:

  1. NaN的数据类型是number
  2. 数组(Array)的数组类型是object
  3. 日期(Date)的数据类型是object
  4. null的数据类型是object
  5. 未定义变量的数据类型为undefined

2、数据类型转换

1)、将数字转化为字符串

全局方法String()可以将数字转化为字符串。

该方法可用于任何类型的数字、字母、变量、表达式:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JavaScript数据类型转换</title>
	</head>
	<body>

		<p> String() 方法可以将数字转换为字符串。</p>
		<p id="demo"></p>
		<script>
			var x = 123;
			document.getElementById("demo").innerHTML =
				String(x) + "<br>" +
				String(123) + "<br>" +
				String(100 + 23) + "<br>" +
				"Number的toString()方法也能达到相同的效果:" + "<br>" +
				x.toString() + "<br>" +
				(123).toString() + "<br>" +
				(100 + 23).toString();
		</script>
	</body>
</html>

运行结果:

当然,Number的toString()方法也能达到相同的效果。

我们也有其它方法将数字转化为字符串的方法:

方法

描述

toExponential()

把对象的值转化为指数计数法。

toFixed()

把数字转化为字符串,结果的小数点后有指定位数的数字。

toPrecision()

把数字格式化为指定的长度。

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JavaScript数据类型转换</title>
	</head>
	<body>

		<p> 更多将数字转化为字符串的方法。</p>
		<p id="demo"></p>
		<script>
			var value = 2.13456;
			document.getElementById("demo").innerHTML =
				value.toExponential() + "<br>" +
				value.toExponential(2) + "<br>" +
				value.toPrecision() + "<br>" +
				value.toPrecision(2) + "<br>" +
				value.toFixed() + "<br>" +
				value.toFixed(2);
		</script>
	</body>
</html>

运行结果:

2)、将布尔值转换为字符串

全局方法String()可以将布尔值转换为字符串。

String(false)        // 返回 "false"

String(true)         // 返回 "true"

Boolean 方法 toString() 也有相同的效果。

false.toString()     // 返回 "false"

true.toString()      // 返回 "true"

  1. 、将日期转换为字符串

Date()转换为字符串:

Date()      // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

全局方法 String() 可以将日期对象转换为字符串:

String(new Date())      // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

Date 方法 toString() 也有相同的效果:

obj = new Date()

obj.toString()   // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JavaScript数据类型转换</title>
	</head>
	<body>

		<p> 将日期转换为字符串。</p>
		<p id="demo"></p>
		<script>
			var value = 2.13456;
			var date = new Date();
			document.getElementById("demo").innerHTML =
				Date() + "<br>" +
				String(new Date()) + "<br>" +
				date.getDate() + "<br>" +
				date.getDay() + "<br>" +
				date.getFullYear() + "<br>" +
				date.getHours() + "<br>" +
				date.getMilliseconds() + "<br>" +
				date.getMinutes() + "<br>" +
				date.getMonth() + "<br>" +
				date.getSeconds() + "<br>" +
				date.getTime() + "<br>" +
				date.toString();
		</script>
	</body>
</html>

运行结果:

4、将字符串转换为数字

全局方法 Number() 可以将字符串转换为数字。

字符串包含数字(如 "3.14") 转换为数字 (如 3.14).

空字符串转换为 0。

其他的字符串会转换为 NaN (不是个数字)。

Number("3.14")    // 返回 3.14

Number(" ")       // 返回 0

Number("")        // 返回 0

Number("99 88")   // 返回 NaN

更多将数字转化为字符串的方法

5、将布尔值转换为数字

全局使用Number()方法可将布尔值转换为数字

Number(false)  //返回 0

Number(true)  //返回 1

6、将日期转换为数字

全局使用Number()方法可将日期转换为数字

var date = new Date();

Number(date )  //返回 1702517251327

日期有getTime()方法也有相同的效果。

var date = new Date();

date .getTime()  //返回 1702517251327

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JavaScript数据类型转换</title>
	</head>
	<body>

		<p> 将日期转换为数字。</p>
		<p id="demo"></p>
		<script>
			var value = 2.13456;
			var date = new Date();
			document.getElementById("demo").innerHTML =
				Number(date) + "<br>" +
				date.getTime() + "<br>" +
				date.toString();
		</script>
	</body>
</html>

运行结果:

7、自动转换类型

当JavaScript尝试操作一个“错误”的数据类型时,会自动转换为“正确”的数据类型。

比如:

5 + null    // 返回 5   null 转换为 0

"5" + null  // 返回"5null"  null 转换为 "null"

"5" + 1     // 返回 "51"  1 转换为 "1" 

"5" - 1     // 返回 4  "5" 转换为 5

三、JavaScript正则表达式

1、什么是正则表达式

正则表达式是由一个字符序列形成的搜索模式。

当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。

正则表达式可以是一个简单的字符,或一个更复杂的模式。

正则表达式可用于所有文本搜索和文本替换的操作。

2、语法

/正则表达式主体/修饰符(可选)

实例解析:

var patt = /runoob/i

/runoob/i  是一个正则表达式。

runoob  是一个正则表达式主体 (用于检索)。

i  是一个修饰符 (搜索不区分大小写)。

3、使用字符串方法

1)、search()方法使用字符串

实例:检索字符串中子串

var str = "Visit Runoob!";

var n = str.search("Runoob");

2)、replace()方法使用字符串

实例:使用正则表达式不区分大小写将字符串microsoft替换为Runoob

var str = document.getElementById("demo").innerHTML;

var txt = str.replace(/microsoft/i,"Runoob");

当然,也有其它方法实现字符串内容替换

var str = document.getElementById("demo").innerHTML;

var txt = str.replace("Microsoft","Runoob");

正则表达式整体示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JavaScript数据类型转换</title>
	</head>
	<body>

		<p> 将日期转换为数字。</p>
		<p id="demo"></p>
		<script>
			var date = new Date();
			var str = "Visit Runoob!";
			var strReplace = "Visit Microsoft!";
			var str2 = "Visit Microsoft!";
			document.getElementById("demo").innerHTML =
				"搜索字符串 Runoob, 并显示匹配的起始位置:" + "<br>" +
				str.search("Runoob") + "<br>" +
				"使用正则表达式将 Microsoft替换为Runoob" + "<br>" +
				strReplace.replace(/microsoft/i, "Runoob") + "<br>" +
				"不使用正则表达式将 Microsoft替换为Job" + "<br>" +
				str2.replace("Microsoft", "Job") + "<br>" +
				date.toString();
		</script>
	</body>
</html>

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单元测试二(实验)-云计算2023.12-云南农业大学

1、实践系列课《深入浅出Docker应用》 https://developeraliyun.com/adc/scenarioSeries/713c370e605e4f1fa7be903b80a53556?spma2c6h.27088027.devcloud-scenarioSeriesList.13.5bb75b8aZHOM2w 容器镜像的制作实验要求 创建Dockerfile文件: FROM ubuntu:latest WORKDIR data…

C++初阶(十六)优先级队列

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、priority_queue的介绍和使用1、priority_queue的介绍2、priority_queue的使用 二、priori…

高性能国产TYPE-C/DP/EDP转MIPIDSI/CSI/LVDS,龙迅LT7911D,支持高达4K60HZ的分辨率

LT7911D概述&#xff1a; T7911D是一款高性能TYPE-C/DP/EDP转2 PORT MIPI或者LVDS的芯片&#xff0c;目前主要在AR/VR或者显示器上应用的很多&#xff0c;对于DP1.2输入&#xff0c;LT7911D可配置为1/2/4车道。自适应均衡化使其适用于长电缆应用&#xff0c;最大带宽可达21.6G…

【AntDB数据库】亚信安慧通过CMMI5级认证

近日&#xff0c;湖南亚信安慧科技有限公司&#xff08;以下简称“亚信安慧”&#xff09;通过CMMI5级认证。这标志着亚信安慧在软件研发能力、过程组织能力、项目管理能力、解决方案交付能力等方面达到了国际先进水平&#xff0c;具备为通信、金融、交通、能源、物联网等行业客…

图片如何无损放大?亲测三款好用图片无损放大工具

图片如何无损放大&#xff1f;当遇到图片不清晰或模糊受损的情况时&#xff0c;我们往往希望能够使用这张图片。然而&#xff0c;图片的模糊问题往往令人困扰。幸运的是&#xff0c;我们可以使用一些方法将图片无损放大&#xff0c;从而解决照片模糊的问题。今天&#xff0c;我…

开源云原生网关Linux Traefik本地部署结合内网穿透远程访问

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…

实验01:静态路由配置实验

1.实验目的&#xff1a; 本次实验的主要目的是了解静态路由的配置和实现原理&#xff0c;熟悉路由器的基本操作&#xff0c;掌握在网络中进行静态路由配置的方法和技巧。 2.实验内容&#xff1a; 搭建网络拓扑&#xff0c;包括三台路由器和两台PC。配置路由器的IP地址和路由…

深入理解C语言的函数参数

1、一个简单的函数 int Add(int x, int y) {return x y; }int main() {printf("%d", Add(2, 3, 4, 5, 6));return 0; } 这一段足够简单的代码&#xff0c;闭眼都能知道运行结果会在屏幕上打印 5 。那编译器是怎么处理后面的 4、5、6 &#xff1f; 我们再看看这个函…

【Spring教程28】Spring框架实战:从零开始学习SpringMVC 之 请求与请求参数详解

目录 1 设置请求映射路径1.1 环境准备 1.2 问题分析1.3 设置映射路径 2 请求参数2.1 环境准备2.2 参数传递2.2.1 GET发送单个参数2.2.2 GET发送多个参数2.2.3 GET请求中文乱码2.2.4 POST发送参数2.2.5 POST请求中文乱码 欢迎大家回到《Java教程之Spring30天快速入门》&#xff…

Vue3-17-ref 模板引用的基本使用

什么是模板引用 简单来说&#xff0c;就是在 js 代码中 获取到 html 中的dom元素的完整信息&#xff0c; 从而实现直接操作dom元素的效果。模板引用的语法 1、给 dom 元素添加 ref名称 属性&#xff0c;指定一个独有的名称&#xff1b; 2、js 中 声明一个 与 dom 元素的 ref 同…

华为海思、燧原、海光等齐力打破封锁,谁主AI芯片江山| 百能云芯

近期&#xff0c;美国对英伟达出口进行了限制&#xff0c;导致英伟达无法向中国大陆销售AI芯片&#xff0c;这一局势催生了中国本土IC设计企业的崛起&#xff0c;包括华为旗下的海思科技、腾讯旗下的燧原科技&#xff0c;以及海光信息和新创公司天数智芯等纷纷抢占市场。 据百能…

【问题解决】unable to do port forwarding: socat not found

问题复现 前阵子应公司要求做华为云平台的调研&#xff0c;写了一篇文档包含将华为云CCE下载kuberctl配置及使用kubectl转发流量到本地的操作。 今天一早上同事就发来一个错误界面&#xff0c;说是Java远程调试转发过来的端口出现问题&#xff0c;如下图&#xff1a; 处理思路…

wgcloud访问页面如何加前缀/wgcloud

nginx配置实现加/wgcloud - WGCLOUD

Linux:ELF

文章目录 前置知识从文本文件到可执行文件经历的阶段编译器gcc目标文件 ELFSection&#xff08;节&#xff09;Segment&#xff08;段&#xff09;从链接角度和从程序角度看ELF文件1. Section Header Table:2. Program Header Table: 参考 前置知识 从文本文件到可执行文件经历…

树莓派zero w入坑指南

树莓派zero w入坑指南 入坑契机 说起创客不得不提到开源硬件Raspberry Pi(树莓派)。它是一款基于ARM的微型电脑主板&#xff0c;以MicroSD卡为硬盘&#xff0c;提供HDMI和USB等外部接口&#xff0c;可连接显示器和键鼠。以上部件全部整合在一张仅比信用卡稍大的主板上&#x…

jvm阶段小节

文章目录 静态变量与局部变量的对比&#xff1a; 我们知道类变量有两次初始化的机会&#xff0c;第一次是在“准备阶段”&#xff08;链接&#xff09;&#xff0c;执行系统初始化&#xff0c;对类变量设置默认值&#xff0c;另一次则是在“初始化”阶段&#xff0c;赋予程序员…

Postman测试 restful 接口!

日常开发中经常会遇到没有前提界面&#xff0c;直接调用后台 restful 接口的情景&#xff0c;不管时后台代码先行&#xff0c;并且开发完之后开发人员进行自测还是&#xff0c;或者是专业测试进行 restful 接口测试&#xff0c;都需要一款工具&#xff0c;现在就来介绍 postman…

如何在本地搭建Oracle数据库并实现无公网ip通过PLSQL工具远程连接数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 正文开始前给大家推荐个网站&#xff0c;前些天发…

PythonStudio:一款国人写的python及窗口开发编辑IDE,可以替代pyqt designer等设计器了

本款软件只有十几兆&#xff0c;功能算是强大的&#xff0c;国人写的&#xff0c;很不错的python界面IDE.顶部有下载链接。下面有网盘下载链接&#xff0c;或者从官网直接下载。 目前产品免费&#xff0c;以后估计会有收费版本。主页链接&#xff1a;PythonStudio-硅量实验室 作…

期末数组函数加强练习

前言&#xff1a;由于时间问题&#xff0c;部分题解取自网友&#xff0c;但都是做过的好题。 对于有些用c实现的题目&#xff0c;可以转化成c实现&#xff0c;cin看成c的读入&#xff0c;可以用scanf&#xff0c;输出cout看作printf&#xff0c;endl即换行符 开胃菜&#xff…