【JavaWeb】第三章 JavaScript基础

news2024/11/29 20:54:08

文章目录

  • 1、JavaScript介绍
  • 2、JavaScript和HTML代码的结合方式
    • 2.1 第一种方式
    • 2.2 第二种方式
  • 3、JS的变量和数据类型
  • 4、JS关系运算符
  • 5、JS逻辑运算符
  • 6、数组
  • 7、JS函数的定义
  • 8、JS函数的隐形参数arguments
  • 9、JS中的自定义对象



1、JavaScript介绍

JavaScript(JS)语言诞生主要是为了完成页面数据验证,因此它运行在客户端,需要运行浏览器来解析执行JavaScript代码。

JS是Netscape网景公司的产品,最早取名LiveScript,为了吸引更多的Java程序员,更名JavaScript。因此Java和JavaScript没关系。

在这里插入图片描述

JS是弱类型,即类型可变。Java是强类型,即定义变量的时候,类型已确定,而且不可变。

Java中:
int i = 12;

---------------------
JavaScript中:
var i;
i = 12; 数值型
i = "abc" 字符串型

JavaScript的特点:

  • 交互性(实现信息的动态交互)
  • 安全性(不允许直接访问本地硬盘)
  • 跨平台性(只要可以解释JS的浏览器都可以执行,和平台无关)

2、JavaScript和HTML代码的结合方式

2.1 第一种方式

在head标签中或者body标签中,使用script标签来书写JavaScript代码

<!DOCTYPE html>
<html lang="en>
<head>
	<meta charset="UTF-8">
	<title>Hello,JS!</title>
	<script type="text/javascript">
		//alert是JS语言提供的一个警告框函数
		//可以接收任意类型的参数,传参就是警告框的提示信息
		alert("Hello,JavaScript!");
	</script>
	
</head>
<body>
</body>

</html>

运行效果:
在这里插入图片描述

2.2 第二种方式

使用script引入单独的JavaScript代码文件,类似CSS,达到复用的效果。script标签的src属性,可以指定外部js文件的路径。

//当前工程下定义1.js文件

alert("Hello,JavaScript!")
<!DOCTYPE html>
<html lang="en>
<head>
	<meta charset="UTF-8">
	<title>Hello,JS!</title>
	<script type="text/javascript" src="1.js"></script>
	
</head>
<body>
</body>

</html>

运行效果:
在这里插入图片描述
注意:

不能在一对script标签中同时使用这两种方式:

错误写法:
-------------------

<script type="text/javascript" src="1.js">
	alert("hello again");
</script>
正确写法,使用两对script标签:
-------------------

<script type="text/javascript" src="1.js"></script>
<script type="text/javascript">
	alert("Hello again");
</script>

运行效果:
在这里插入图片描述
点击OK
在这里插入图片描述

3、JS的变量和数据类型

JavaScript中变量的定义格式:

  • var 变量名;
  • var 变量名 = 值;

JavaScript的变量类型包括:

  • 数值类型:number,包括了Java中的byte、short、int、long、float、double
  • 字符串类型:string
  • 对象类型:object
  • 布尔类型:boolean
  • 函数类型:function
<script type="text/javascript">
	vari;
	i=12;
	//typeof()是JS语言提供的一个函数
	alert(typeof(i));//number
	i="abc"
	alert(typeof(i));//string
</script>

JavaScript里的特殊值

  • undefined:未定义,所有js变量未赋予初始值的时候,默认值都是undefined
  • null:空值
  • NAN:全称,Not a Number,非数值,非数字
<script type="text/javascript">
	var a = 12;
	var b = "abc";
	alert(a * b);//NAN
</script>

在这里插入图片描述

4、JS关系运算符

除了Java中的> < >=等等,JS中需要区分的有等于和全等于:

  • 等于:== 简单的做字面值的比较
  • 全等于:===除了做字面值的比较之外,还会比较两个变量的数据类型
<script type="text/javascript">
	var a = "12";
	var b = 12;
	alert(a == b); //true
	alert(a === b); //false
</script>

5、JS逻辑运算符

且:&&

  • 当表达式全为真的时候,返回最后一个表达式的值
  • 当表达式中,有一个为假的时候,返回第一个为假的表达式的值
<script type="text/javascript>
	var a = "abc";
	var b = true;
	var c = null;
	var d = false;
	alert(a && b); //true
	alert(b && a);//abc
	alert(c && a);//null
	alert(a && d && c);//false
</script>

//注意null别带引号,"null"是字符串,为真,true和false更别带了

或:||

  • 当表达式全为假时,返回最后一个表达式的值
  • 当表达式中,有一个为真时,返回第一个为真的表达式的值

取反:!

不同于Java,在JavaScript语言中,所有的变量都可以做为一个boolean类型的变量去使用。 且0、null、undefined、""(空串)都认为是false,其余为真。

<script type="text/javascript">
	var x = null;
	if (x) {
		alert("null为真");
	}else{
		alert("null为假");
	}
</script>

在这里插入图片描述
注意区分,JS中的""和” “,前者为假,但加了空格以后为真!!!

6、数组

JS中数组的定义格式:

var 数组名 = [];//空数组
var 数组名 = [1,"abc",true];

JavaScript中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。

<script type="text/javascript">
	var arr = [];
	alert(arr.length);//0
	
	arr[0]=12;//java中这样操作报错
	alert(arr[0]);
	alert(arr.length);//1
	
	arr[2] = "abc";
	alert(arr.length);//3,并不是2
	alert(arr[1]);//undefined
</script>

JS数组的遍历:

<script type="text/javascript">
	for (var i = 0;i<arr.length;i++){
		alert(arr[i]);
	}
</script>

7、JS函数的定义

第一种定义方式

//格式

function 函数名(形参列表){
	函数体;
}

不同于Java,JS函数的形参列表不用指定数据类型,也不用加var,直接写变量名就好。

//举例:

<script type="text/javascript">
	function fun(){
		alert("无参函数fun执行");
	}
	//调用
	fun();

	//定义有参JS函数,不用指定类型,
	//不用加var
	function fun2(a,b){
		alert(a+b);
	}
	fun2(1,2);
</script>

//定义有返回值的JS函数

<script type="text/javascript">
	function sum(num1,num2){
		var result = num1 + num2;
		return result;
	}
	alert(sum(100,200));
</script>

第二种定义方式

//格式

var 函数名 = function(形参列表){函数体;}

//举例

<script type="text/javascript">
	var sum = function(num1,num2){
		var result = num1 + num2;
		return result;
	}
	alert(sum(100,200));
</script>

注意:

在Java中方法可以重载,但在JS中函数的重载会直接覆盖掉上一次的定义

8、JS函数的隐形参数arguments

在function函数中不需要定义,但却可以直接用来获取所有参数的变量,称之为隐形参数。类似于Java中的可变长参数:public void fun (Object…args);可变长参数是一个数组。JS中的隐形参数也跟Java中的可变长参数一样,操作类似数组。

用法:

<script type="text/javascript">
	function fun(){
		alert(arguments.length);
		
		alert("无参excute");
		
		//操作类似数组
		for(var i=0;i<arguments.length;i++){
			alert(arguments[i]);
		}
	}
	fun(1,2,3,"a");
</script>

举例:

//需求:
//计算任意数量的参数相加,并返回结果

<script type="text/javascript">

	function sum(num1,num2){
		var result = 0;
		for(var i=0;i<arguments.length;i++){
			result +=arguments[i];
		}
		return result;
	}
	alert(sum(1,2,3));//6
	alert(sum(1,2,3,4,5,"abc"));//15abc
</script>


运行结果:
在这里插入图片描述
有”字符串“时,加号也是做了一个拼接。这个bug可加一个if分支修复:

<script type="text/javascript">

	function sum(num1,num2){
		var result = 0;
		for(var i=0;i<arguments.length;i++){
			if(typeof(arguments[i]) == "number"){
				result +=arguments[i];
			}
		}
		return result;
	}
	alert(sum(1,2,3));//6
	alert(sum(1,2,3,4,5,"abc"));//15
</script>


9、JS中的自定义对象

Object形式的自定义对象

对象的定义:

//定义一个对象实例,空对象
var 变量名 = new Object();

//定义一个属性
变量名.属性名 = 值;

对象的访问:


变量名.属性/函数名();

举例:

<script type="text/javascript">
	var obj = new Object();
	alert(typeof(obj));
	obj.name = "9527";
	obj.age = 22;
	obj.fun = function(){
		alert("姓名:"+this.name+",年龄:"+this.age);
	}
	alert(obj.age);
	obj.fun();
</script>

运行效果:
在这里插入图片描述

花括号形式的自定义对象

对象的定义:

//空对象
var 变量名 = {};

//定义一个属性,多个属性用逗号分开
var 变量名 = {
	属性名:值,
	属性名:值,
	属性名:值,
	函数名:function(){} //定义一个函数
}

对象的访问:


变量名.属性/函数名();

举例:

<script type="text/javascript">
	var obj = {
		name:"9527",
		age:22,
		fun:function(){
			alert("姓名:"+this.name+",年龄:"+this.age);
		}
	};
	alert(obj.name);
	obj.fun();
</script>

运行结果:
在这里插入图片描述

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

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

相关文章

摸鱼时,我用几百张字符画做了个动画......

摸鱼时&#xff0c;我用几百张字符画做了个动画…&#xff0c;话不多说&#xff0c;先来看成果&#xff1a; 完整效果视频已上传至B站&#xff1a;摸鱼时我用Java IO流证明了爱坤&#xff01; 事情是这样的… … 学校马上就要开展第20届程序设计大赛了&#xff0c;半年没有练…

Java对象深拷贝 终极方案 deep clone an object

Java对象深拷贝 终极方案定义 深拷贝深拷贝常见误区spring / apache commons 等工具类的 BeanUtils.copy 方法 ❌正确做法&#xff1a; 上中下3策 ✔json 序列化 (用jackson&#xff0c;别用其他的gson/fastjson/json-lib 等&#xff0c;不解释)objectMapper 工具类初始化1. 对…

CDC Schemes

CDC Schemes 下面是一些questa使用时常见的cdc schemes的解释 reconvergence reconvergence的原理如下图所示 如上图所示,sig1和sig2经sync cell同步过来后,又在组合逻辑上reconvergence了,最后送到rx domain的flip-flop上; Fan-in of a flip-flop includes at least t…

跨境物流美国专线的注意事项是哪些

目前国内运输需求最大的物流运输是美国专线&#xff0c;深圳、广州、杭州等地有很多美国专线货运公司。虽然每个人的选择都比较灵活&#xff0c;但是专线物流运输也有很多注意事项&#xff0c;否则会影响货物的运输。那么对于跨境物流美国专线的注意事项&#xff0c;你了解多少…

7. Spring Boot2.5 安全机制与 REST API 身份验证实战

文章目录Spring Boot2.5 安全机制与 RESTAPI 身份验证实战一、Java Spring Boot 2.5 安全机制Java Spring Boot 2.0 安全机制安全漏洞安全漏洞建议总结&#xff1a;Java Spring SecurityJava 安全框架 Shiro二、Java Spring Boot 2.5 安全实战Spring Security Demo2. WebSecuri…

【Python】pyinstaller打包百科全书

前言 记录pyinstaller打包中的常用命令和报错。 详细的还是去官网自己看吧&#xff0c;这里只记录打包中常用到的命令。 如果我这里帮助不到你&#xff0c; 官网在这里&#xff1a;https://github.com/pyinstaller/pyinstaller 这两篇文章基本覆盖100%的报错了&#xff0c; 参…

【微服务】分布式下服务调用产生的问题之服务容错

服务容错前言模拟高并发场景压测测试服务雪崩效应常见容错方案隔离超时限流熔断降级常见的容错组件HystrixResilience4JSentinel总结前言 上篇中&#xff0c;我们了解了Ribbon的概念&#xff0c;也实现了基于Ribbon的服务调用&#xff0c;但同样也引发了另一个问题&#xff0c…

什么?“裸辞”一个月拿到13家offer,网友:你是在找存在感吗···

相信大家都知道天下分久必合、合久必分的道理&#xff0c;所以&#xff0c;一旦行业发展成熟&#xff0c;必定会重新洗牌&#xff0c;就像朝代的更替一样&#xff0c;去其糟粕&#xff0c;取其精华&#xff01;现在互联网发展就是遇到了这样的瓶颈期&#xff0c;出现了衰退&…

【Mac】VSCode 更新1.73版本后JSTS代码跳转异常

前言 今天有小伙伴MacOS更新了VS Code版本后&#xff0c;说工程内的代码跳转全部异常了&#xff0c;没法正确跳转。搞了两三个小时没搞出来&#xff0c;找到了我&#xff0c;让我帮忙瞧瞧。排查下来发现这问题有点意思&#xff0c;故此记录一下。 问题 排查姿势 1. 提示没有定…

【数据结构】单链表

文章目录单链表链表的概念及结构链表的分类链表的实现动态申请一个节点创建链表单链表打印单链表尾插单链表尾删单链表头插单链表头删单链表 链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序 是通过链表中的…

代码中统一异常如何处理,才能让代码更清晰

背景 软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;甚至有一半以上的时间都是在处理各种异常情况&#xff0c;所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而且还影响代码的可读…

力扣刷题链表需要调试?一个简单的调试器帮你解决苦恼

本人在刷链表题时&#xff0c;由于是新手&#xff0c;所以老是过不去&#xff0c;需要调试&#xff0c;力扣会员开不起&#xff0c;在VS自己创建一个链表太麻烦 &#xff0c;所以就有了今天这个 对于懒人的调节力扣链表便捷器 这个东西很简单&#xff0c;但是很有效 文章目录1.…

python数学建模--sympy三维图像绘制

目录问题引出库选择与绘制准备plot3d类api简介图像绘制与参数说明关键字参数绘图举例绘图的案例三角函数另一个三角函数问题引出 在求解二元函数最值的时候&#xff0c;我们不知道自己经过若干个步骤求出的结果是否正确&#xff0c;那么我们该怎么办呢&#xff1f;一种办法就是…

学完Python,不做程序员,只接兼职,哎,就是玩儿

现在这个时代&#xff0c;人人开始追求做斜杠青年&#xff0c;多方面开展副业&#xff0c;赚取几份工资。有很多朋友就抓住了Python的风口&#xff0c;靠着Python兼职月入一万。那么学完Python&#xff0c;有哪些可以做的兼职呢&#xff1f; 一、闲暇时间&#xff0c;接自由单…

2020年数维杯数学建模B题以家庭为单位的小规模多品种绿色农畜产品经营模式开发求解全过程文档及程序

2020年数维杯数学建模 B题 以家庭为单位的小规模多品种绿色农畜产品经营模式开发 原题再现&#xff1a; 在全球化疫情蔓延和国民生活水平稳步提高大形势下&#xff0c;居民对于绿色农畜产品的需求可能会迎来新的爆发期。传统大规模种植或养殖模式因其较大的风险、产品质量的非…

第四章 带头双向链表的讲解与实现

初阶数据结构 第一章 时间复杂度和空间复杂度 第二章 动态顺序表的实现 第三章 单向链表的讲解与实现 第四章 带头双向链表的讲解与实现 文章目录初阶数据结构前言一、什么是头节点&#xff08;哨兵位&#xff09;二、双向链表结点的定义三、接口函数的实现1、初始化2、尾插3、…

【附源码】计算机毕业设计java中国朝鲜族民族特色服务系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

超全,看完这份微服务架构与实践文档,微服务不再难

前言&#xff1a; 微服务近年来受到了极大的关注并成为趋势&#xff0c;不信的话可以查看 Google Trends。 可以看到从2014年开始人们对它产生了极大的兴趣&#xff0c;随着时间的推移&#xff0c;这一趋势仍在增长。 随着数字化转型的推进&#xff0c;越来越多的企业开始尝…

IntelliJ IDEA禁止某些文件夹indexing

IntelliJ IDEA禁止某些文件夹indexing 文章目录IntelliJ IDEA禁止某些文件夹indexing问题描述方法一&#xff1a;标记文件夹为Exclude方法二&#xff1a;.iml文件中手动加入excludeFolder节点方法三&#xff1a;直接加入IDEA忽略文件和文件夹列表问题描述 IDEA启动后&#xff…

计算机毕业设计(附源码)python在线答题系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…