JavaScript_00001_00000

news2024/12/27 12:27:07

contents

  • 简介
  • 变量与数据类型
    • 自动类型转换
    • 强制类型转换

简介

变量与数据类型

根据变量定义的范围不同,变量有全局变量和局部变量之分。直接定义的变量是全局变量,全局变量可以被所有的脚本访问;在函数里定义的变量称为局部变量,局部变量只在函数内有效。如果全局变量和局部变量使用相同的变量名,则局部变量将覆盖全局变量。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
		<script type="text/javascript">
			
			var test = "全局变量";
			
			function checkScope(){
				
				var test = "局部变量";
				
				console.log(test);
			}
			
			checkScope();
			
		</script>
		
	<body>
		
	</body>
	
</html>

JavaScript的变量没有块范围。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
		<script type="text/javascript">
			
			function test(o){
				
				//定义变量i,变量i的作用范围是整个函数。
				var i = 0;
				
				if(typeof o == "object"){
					
					//定义变量j,变量j的作用范围是整个函数内,而不是if块内。
					var j = 5;
					
					for(var k=0; k<10; k++){
						
						//因为JavaScript没有代码块范围,所以k的作用范围是整个函数内,而不是循环体内。
						document.write(k);
					}
					
					//即使出了循环体,k的值依然存在。
					console.log(k + "\n" + j);
				}
			}
			
			test(document);
			
		</script>
		
	<body>
		
	</body>
	
</html>

定义变量时写var和不写var的区别?

  • 如果使用var定义变量,那么程序会强制定义一个新变量。
  • 如果没有使用var定义变量,系统会优先在当前上下文中搜索是否存在该变量。只有在该变量不存在的前提下,系统才会重新定义一个新变量。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
		<script type="text/javascript">
			
			//定义全局变量。
			var scope = "全局变量";
			
			function test(){
				
				//全局变量被局部变量覆盖。
				//而此时scope局部变量尚未赋值,故此处输出undefined。
				document.writeln(scope + "<br />");
				
				//定义scope局部变量,其作用范围为整个函数内。
				/*
				此处全局变量scope在test()函数中已经被覆盖了,局部变量在整个test()函数内部都是有效的,但此处scope还没有被赋值,故此处输出undefined。 
				*/
				//var scope = "局部变量";
				
				/*
				此处不是定义新变量,而是直接为全局变量scope赋值。因此test()函数并没有覆盖全局变量scope。 
				*/
				scope="局部变量";
				
				document.writeln(scope + "<br />");
				
			}
			
			test();
			
		</script>
		
	</head>
	
	<body>
	</body>
	
</html>

全局变量的作用范围对于执行HTML事件处理一样有效。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>事件处理中的局部变量和全局变量</title>
		
		<script type="text/javascript">
			
			//定义全局变量
			var x = "全局变量";
			
		</script>
		
	</head>
	
	<body>
		
		<!--在onclick事件中重新定义了x局部变量。-->
		<input type="button" value="局部变量" onclick="var x='局部变量'; console.log('输出x局部变量的值:' + x);"/>
		
		<!--直接输出全局变量x的值。-->
		<input type="button" value="全局变量" onclick="console.log('输出x全局变量的值:' + x);"/>
		
	</body>
	
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
		<script type="text/javascript">
			
			var a = 5E2;
			var b = 1.23e-3;
			
			console.log(a); //print:500
			console.log(b); //print:0.00123
			
			//如果数值只有小数部分,则可以省略整数部分的0,但小数点不能省略。
			c = 3.12e1;
			d = 45.0;
			e = .34e4;
			f = .24e-2;
			
			console.log(c); //print:31.2
			console.log(d); //print:45
			console.log(e); //print:3400
			console.log(f); //print:0.0024
			
		</script>
		
	</head>
	
	<body>
	</body>
	
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
		<script type="text/javascript">
			
			var a = Number.POSITIVE_INFINITY;
			var b = Number.NEGATIVE_INFINITY;
			console.log(a + b); //print:NaN
			
			/*
			JavaScript中的算术运算允许除数为0(除数和被除数也可同时为0,得到结果为NaN),正数除以0的结果就是Infinity,负数除以0的结果就是-Infinity。
			Nan是另一个特殊的数值,它是Not a Number三个单词的首字母,表示非数。0除以0,或者以Infinity执行算术运算都将产生NaN的结果。当然,如果算术表达式中有个NaN的数值变量,则这个算术表达式的值为NaN。
			NaN与Infinity和-Infinity不同的是,NaN不会与任何数值变量相等,也就是NaN==NaN也返回false。那如何判断某个变量是否为NaN呢?JavaScript专门提供了isNaN()函数来判断某个变量是否为NaN。
			*/
			//定义x的值为NaN。
			var x = 0/0;
			//判断两个NaN是否相等。
			if(x!=x){
				console.log("NaN不等于NaN。");
			}
			
			//调用isNaN判断变量
			if(isNaN(x)){
				console.log("x是一个NaN。");
			}
			
		</script>
		
	</head>
	
	<body>
	</body>
	
</html>

JavaScript提供了一些简单的方法访问这些特殊值,特殊值通过JavaScript的内嵌类Number访问。访问方式如下表:

Number类的变量特殊值
Number.MAX_VALUE数值型变量允许的最大值
Number.MIX_VALUE数值型变量允许的最小值
Number.POSITIVE_INFINITYInfinity(正无穷大)
Number.NEGATIVE_INFINITY-Infinity(负无穷大)
Number.NaNNaN(非数)

自动类型转换

在这里插入图片描述

强制类型转换

toString() 将布尔值、数值等转换成字符串。
parseInt() 将字符串、布尔值等转换成整数。
parseFloat() 将字符串、布尔值等转换成浮点数。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
		<script type="text/javascript">
			
			var a = "3.14";
			var b = a + 2;
			
			var c = parseFloat(a) + 2;
			
			console.log(b + "\n" + c);
			
		</script>
		
	<body>
		
	</body>
	
</html>

当使用parseInt()或parseFloat()将各种类型的变量转换成数值类型时,结果如下:

  • 字符串值:如果字符串是一个数值字符串,则可以转换成一个数值,否则将转换成NaN。
  • undefined、null、布尔值及其他对象:一律转换成NaN。

当使用toString()函数将各种类型的值向字符串转换时,结果全部是object。

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

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

相关文章

17-k8s控制器资源-job控制

job控制器&#xff1a;就是一次性任务的pod控制器&#xff0c;pod完成作业后不会重启&#xff0c;其重启策略是&#xff1a;Never 1&#xff0c;job控制器案例描述 启动一个pod&#xff0c;执行完成一个事件&#xff0c;然后pod关闭&#xff1b; 事件&#xff1a;计算π的值&a…

【初始RabbitMQ】工作队列的实现

工作队列 工作队列&#xff08;又称为任务队列&#xff09;的主要思想是避免立即执行资源密集型任务&#xff0c;而不得不等待它完成。 相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进 程将弹出任务并最终执行作业。当有多个工作线程…

.NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库

一、效果 记录日志为文档 记录日志到数据库 二、添加NuGet包 三、代码配置 <?xml version"1.0" encoding"utf-8" ?> <log4net><!-- Debug日志 --><appender name"RollingFileDebug" type"log4net.Appender.Roll…

【RL】Value Iteration and Policy Iteration(利用迭代算法求解贝尔曼最优等式)

Lecture 4: Value Iteration and Policy Iteration Value Iteration Algorithm 对于Bellman最优公式&#xff1a; v f ( v ) m a x π ( r γ P π v ) \mathbf{v} f(\mathbf{v}) max_{\pi}(\mathbf{r} \gamma \mathbf{P}_{\pi} \mathbf{v}) vf(v)maxπ​(rγPπ​v) …

Midjourney绘图欣赏系列(一)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不清楚。我们知道它严重依赖机器学…

Python教程(26)——Python迭代器和生成器详解

迭代器 Python中的迭代器是一种对象&#xff0c;它可以迭代&#xff08;遍历&#xff09;一个可迭代对象&#xff08;比如列表、元组或字符串&#xff09;的元素。迭代器用于实现迭代器协议&#xff0c;即包含 __iter__() 方法和 __next__() 方法。 迭代器的工作原理是每次调…

2.11题目

#include <stdio.h> int main() { char a; while((a getchar()) ! -1) { if(a > A && a < Z) a32; putchar(ch); } return 0;} ———————————————— 版权声明&#xff1a;本文为博主原创文章…

2024年危险化学品经营单位主要负责人证模拟考试题库及危险化学品经营单位主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年危险化学品经营单位主要负责人证模拟考试题库及危险化学品经营单位主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;危险化学品经营单位主要负责人证模拟考试题库是根据危险化学品经营单位主…

【大模型 数据增强】LLMAAA:使用 LLMs 作为数据标注器

【大模型 数据增强】LLMAAA&#xff1a;使用 LLMs 作为数据标注器 提出背景算法步骤1. LLM作为活跃标注者&#xff08;LLMAAA&#xff09;2. k-NN示例检索与标签表述化3. 活跃学习策略4. 自动重权技术 LLMAAA 框架1. LLM Annotator2. Active Acquisition3. Robust Training 总结…

数据结构对链表的初步认识(一)

已经两天没有更新了&#xff0c;今天就写一篇数据结构的链表吧&#xff0c;巩固自己也传授知识&#xff0c;不知道各位是否感兴趣看看这一篇有关联表的文章。 目录 链表的概念与结构 单向链表的实现 链表各个功能函数 首先我在一周前发布了一篇有关顺序表的文章&#xff0c;…

【Linux系统化学习】缓冲区

目录 缓冲区 一个样例 现象解释 缓冲区存在的位置 缓冲区 在刚开始学习C语言的时候我们就听过缓冲区这个名词&#xff0c;很是晦涩难懂&#xff1b;在Linux下进程退出时也包含缓冲区&#xff0c;因此缓冲区到底是什么&#xff1f;有什么作用&#xff1f; 让我们先从一个小…

斯坦福大学全能家政服务机器人Mobile ALOHA以及“小群体大智慧”Zooids集群机器人

斯坦福大学成功研发出低成本自主进化克隆人类行为和任务的能力全能型家政服务机器人。 原文标题: 【Mobile ALOHA-Learning Bimanual Mobile Manipulation with Low-Cost Whole-Body Teleoperation】 论文链接:【Mobile ALOHA (mobile-aloha.github.io)】。 以及由斯坦福大学…

51单片机项目(32)——基于51单片机的温度检测及控制装置的proteus仿真

1.功能设定 使用DS18B20测定当前温度并实时显示在LCD1602屏幕&#xff0c;使用四个按键设定温度的上限、下限。当温度低于下限时&#xff0c;蜂鸣器报警同时开启升温装置&#xff1b;当温度大于上限时&#xff0c;蜂鸣器报警同时启动降温装置。 仿真图如下&#xff1a; 2.软件设…

【无标题】管理kvm 虚拟机

管理kvm 虚拟机 点击虚拟机 创建新的虚拟机 安装操作系统 设置root密码

中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第三套(选择题)

CSP-J入门组初赛模拟练习题第三套 1、以下不是属于国家顶级域名的是 A、.au B、.cn C、.com D、.jp 答案&#xff1a;C 考点分析&#xff1a;主要考查域名相关知识&#xff0c;au是澳大利亚、cn是中国&#xff0c;jp是日本&#xff0c;答案C 2、2个10进制数1111和1010的异…

蓝桥杯 星期计算

思路1 由于2022太大&#xff0c;用double来存储&#xff0c;即(52022 % 7) % 7即可 int num 5;int t (int)(Math.pow(20,22)%7);num t;num%7;System.out.println(num1);思路2 你需要知道 (a * b ) % p a % p * b % p Scanner scan new Scanner(System.in);int num 1;for…

计算机设计大赛 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习YOLO抽烟行为检测 该项目较为新颖&#xff0c;适合作为竞赛课…

【感知机】感知机(perceptron)学习策略

感知机( perceptron )是二类分类的线性分类模型&#xff0c;其输入为实例的特征向量&#xff0c;输出为实例的类别&#xff0c;取1 和-1二值。感知机对应输入空间(特征空间)中将实例划分为正负两类的分离超平面&#xff0c;是一种判别模型。感知机是神经网络与支持向量机的基础…

Linux系统——拓展LVM逻辑卷分区与磁盘配额

一、LVM逻辑卷分区 1.检测并确认新硬盘 1.1fdisk 查看或管理硬盘分区 fdisk -l&#xff08;小写的L&#xff09; &#xff08;硬盘设备&#xff09; 或 fdisk 硬盘设备 1.2实际操作 1.2.1fdisk查询结果详解 Device&#xff1a;分区的设备文件名称Boot&#xff1a;是否…

WordPress主题YIA在广告位添加图片广告时下方有空白怎么办?

YIA主题设置中默认有4个广告位&#xff0c;而侧边栏的广告位由站长自行添加。boke112百科在这些广告位添加图片广告后发现图片下方有空白&#xff0c;导致下方的两个角没有变圆角&#xff0c;看起来也有点不好看。具体如下图所示&#xff1a; 其实&#xff0c;这个问题就是典型…