JAVA前期基础JavaScript小结

第一章 JavaScript简介

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。

1.1 JavaScript的历史

JavaScript的历史可以追溯到1995年。当时,网景公司(Netscape)正在开发一种名为Netscape Navigator的Web浏览器。为了使浏览器具备更丰富的交互功能,网景公司雇佣了一位名叫Brendan Eich的工程师,让他设计一种脚本语言。这个脚本语言最初被称为LiveScript。

1995年12月,Netscape公司与Sun Microsystems达成合作协议,将LiveScript更名为JavaScript,以借用Sun Microsystems的Java品牌的声望。然而,JavaScript与Java并没有太多的相似之处,它是一种完全不同的语言。

1996年,微软推出了自己的浏览器Internet Explorer,并在其浏览器中支持了一种名为JScript的脚本语言。JScript与JavaScript在语法和功能方面非常相似,但也存在一些细微的差异。

为了解决不同浏览器之间的兼容性问题,ECMAScript规范应运而生。ECMAScript是JavaScript的标准化规范,定义了JavaScript的语法、类型、操作符等方面的规则,以确保不同浏览器对JavaScript的解释和执行结果保持一致。

自那时以来,JavaScript一直在不断发展和演变。它已经成为Web开发中最重要和最广泛使用的编程语言之一,不仅可以用于前端开发,还可以用于后端开发(如Node.js)和移动应用开发(如React Native)。JavaScript的生态系统也非常丰富,有许多流行的框架和库,如React、Vue、Angular等,可以帮助开发人员更高效地构建复杂的Web应用程序。

1.2 JavaScript的特点

JavaScript具有以下几个特点:

脚本语言

JavaScript是一种解释性的脚本语言,不需要编译过程,可以直接在浏览器中执行。这使得开发和调试过程更加灵活和快速。

弱类型语言

JavaScript是一种弱类型语言,变量的类型在运行时可以动态改变。这意味着开发人员不需要显式地声明变量的类型,可以更加灵活地处理数据。

面向对象

JavaScript支持面向对象编程(OOP),可以使用对象、类、继承等概念来组织和管理代码。开发人员可以通过创建对象和定义方法来实现封装、继承和多态等面向对象的特性。

事件驱动

JavaScript是一种事件驱动的语言,可以通过监听和响应事件来实现交互和动态效果。例如,可以通过监听按钮的点击事件来执行相应的操作。

客户端脚本语言

JavaScript最初是为浏览器而设计的,用于在客户端执行脚本。它可以与HTML和CSS结合使用,实现动态的网页交互和效果。

广泛应用

JavaScript不仅可以在浏览器中执行,还可以在服务器端(如Node.js)和移动应用开发中使用。它已经成为全栈开发的重要组成部分,可以用于构建各种类型的应用程序。

动态性

JavaScript具有很高的动态性,可以在运行时修改和扩展代码。这使得开发人员可以根据需要动态地创建、修改和执行代码,实现更灵活和动态的应用程序。

总的来说,JavaScript是一种灵活、强大且广泛应用的脚本语言,适用于各种类型的应用程序开发,具有丰富的特性和功能。


第二章 JavaScript的使用

2.1 JavaScript的标签引用

在HTML中可以通过引用<script>标签来直接编写js代码

<script>
    alert("hello,js");
</script>

2.2 文件的引用

可以直接创建一个js文件,并编好代码,在HTML中引用js文件来使用

index.html:

<script src="js/01.js"></script>

01.js:

alert("hello,js");

2.3 JavaScript输入/输出

弹窗输入(a为输入的信息):

var a = prompt("输入弹窗的提示信息")

弹窗输入默认输入类型为string类型,如要将输入的内容转为number类型,可以通过下面这一行代码来实现(其中Int代表整数类型,Float代表浮点数类型):

a = parseInt(a)
//或者
a = parseFloat(a)

页面输出:

document.write("要输出的内容")

弹窗输出:

alert("要弹出的内容") //弹窗输出信息

控制台输出:

console.log("要输出的内容") //将结果输出在控制台上

2.4 JavaScript注释

注释不会被解析器解析执行,但可以在源码中看到,方便开发过程中标明该段代码的具体作用

单行注释:

//注释的内容

多行注释:

/*
注释的内容
*/


第三章 JavaScript语法

3.1 标识符

所谓标识符,就是指给变量、函数、属性或函数的参数起名字。

标识符的定义有以下几个规则:

  • 变量名不能以数字开头
  • 变量名不能有空格出现
  • 不能是关键字
  • 可以是26个英文字母(不区分大小)或者包含数字
  • 可以有_或$符号,他们可以开头

JavaScript中的关键字包括:

  1. var:声明一个变量。
  2. let:声明一个块级作用域的变量。
  3. const:声明一个常量。
  4. if:用于条件语句,如果满足条件则执行特定的代码块。
  5. else:在if语句条件不满足时执行的代码块。
  6. switch:用于多个条件的选择语句。
  7. case:在switch语句中定义一个条件。
  8. break:用于跳出循环或switch语句。
  9. for:用于循环执行特定的代码块。
  10. while:在指定条件为真时循环执行特定的代码块。
  11. do-while:在循环体的末尾检查条件是否为真,如果为真则继续执行循环。
  12. function:声明一个函数。
  13. return:从函数中返回一个值。
  14. this:引用当前对象。
  15. new:创建一个对象实例。
  16. class:声明一个类。
  17. extends:用于创建一个类的子类。
  18. import:引入外部模块。
  19. export:将模块中的内容导出。
  20. try:定义一个包含可能出现错误的代码块,并且可以捕获和处理异常。
  21. catch:在try语句块中捕获异常。
  22. finally:在try语句块执行结束后无论是否发生异常都会执行的代码块。
  23. throw:抛出一个异常。
  24. instanceof:检查一个对象是否是某个类的实例。
  25. delete:删除对象的属性或数组中的元素。

3.2变量

3.2.1 JavaScript定义变量的注意事项

  1. 变量名必须以字母、下划线(_)或美元符号($)开头,后面可以跟字母、数字、下划线或美元符号。
  2. 变量名区分大小写,例如"myVariable"和"myvariable"是两个不同的变量。
  3. 变量名不能使用JavaScript的保留字作为变量名,例如"var"、"function"等。
  4. 变量名应该具有描述性,能够清晰地表达变量的用途。
  5. 变量名应该使用驼峰命名法,即第一个单词小写,后面的单词首字母大写,例如"myVariableName"。
  6. 变量名应该尽量避免使用缩写或简写,以提高代码的可读性。
  7. 变量名应该尽量避免使用全局变量,可以使用局部变量或者将变量封装在函数中。
  8. 变量名应该尽量避免使用特殊字符,以免引起命名冲突或者语法错误。
  9. 变量名应该尽量避免使用中文或其他非ASCII字符,以免引起编码问题。
  10. 变量名应该遵循一定的命名规范,例如使用前缀或后缀表示变量的类型或作用域。
  11. 总之,定义变量时应该注意命名规范、可读性和避免冲突,以提高代码的质量和可维护性。

3.2.2 变量的数据类型

JavaScript中有以下三种大的数据类型

基本数据类型(Primitive Data Types):

  • 字符串(String):表示文本数据。
  • 数字(Number):表示数值。
  • 布尔值(Boolean):表示真或假。
  • undefined:表示未定义的值。
  • null:表示空值。
  • Symbol:表示唯一的、不可变的值。

引用数据类型(Reference Data Types):

  • 对象(Object):表示复杂的数据结构,可以包含多个键值对。
  • 数组(Array):表示有序的集合。
  • 函数(Function):表示可执行的代码块。

特殊数据类型:

  • NaN:表示一个非数字值。
  • Infinity:表示一个无穷大的数。

如果想查看某一变量的类型可以通过typeof操作符来实现,代码格式如下:

var 变量名 = 10;
document.write("变量名的数据类型是"+typeof(变量名));

示例代码:

var a = 20 ;
var b = 3.14;
var c = true;
var d = false;
var e = "helloworld";//双引号括起来的内容:字符串
var f = 'a';//单引号括起来的单个内容:字符
var g = new Object() ;//创建对象
var k  ;//未定义类型;没有意义
document.write("a的值是:" +a+ ",a的数据类型是"+typeof(a)+"<br/>");
document.write("b的值是:" +b+ ",b的数据类型是"+typeof(b)+"<br/>");
document.write("c的值是:" +c+ ",b的数据类型是"+typeof(c)+"<br/>");
document.write("d的值是:" +d+ ",b的数据类型是"+typeof(d)+"<br/>");
document.write("e的值是:" +e+ ",e的数据类型是"+typeof(e)+"<br/>");
document.write("f的值是:" +f+ ",f的数据类型是"+typeof(f)+"<br/>");
document.write("g的值是:" +g+ ",g的数据类型是"+typeof(g)+"<br/>");
document.write("k的值是:" +k+ ",k的数据类型是"+typeof(k)+"<br/>");

 运行结果:


3.3 运算符

3.3.1 算术运算符

算术运算符用于表达式计算。

y=3
运算符描述例子结果
+加法x=y+1x=4
-简法x=y-1x=2
*乘法x=y*2x=6
/除法x=y/2x=1.5
%模(求余数()x=y%2x=1
++自增++yy=4
y++
--自减--yy=2
++y

3.3.2 赋值运算符

赋值运算符用于给 JavaScript 变量赋值。

x=4 y=2
运算符例子等同于结果
=x=yx=4
+=x+=yx=x+yx=6
-=x-=yx=x-yx=2
*=x*=yx=x*yx=8
/=x/=yx=x/yx=2
%=x%=yx=x%yx=0

3.3.3 关系运算符

关系运算符在逻辑语句中使用,以测定变量或值是否相等。

x=2 y=3
运算符说明例子返回值
>大于x>yfalse
<小于x<ytrue
>=大于等于x>=yfalse
<=小于等于x<=ytrue

3.3.4 位运算符

x=2(0000 0000 0000 0010)  y=3(0000 0000 0000 0011)
运算符说明例子结果
&按位与x&y

2(0000 0000 0000 0010)

|按位或x|y

3(0000 0000 0000 0011)

~按位取反~x-3(0000 0000 0000 0011)
^按位异或x^y1(0000 0000 0000 0001)

按位取反详解:

  1. JavaScript 中的数字是以补码形式进行表示
  2. 在计算机中,负数常常使用补码表示。补码是一种表示有符号整数的方法,它可以使加法和减法的运算规则统一,同时避免了使用额外的符号位。
  3. 在补码表示法中,正数的补码与其本身相同,而负数的补码是其二进制表示的每一位取反后加1。因此,对于一个整数,如果对其进行按位取反操作,实际上是将其补码的每一位取反。
  4. 在 JavaScript 中,数字被存储为32位有符号整数。当数字被转换为补码形式时,按位取反操作实际上是将其二进制表示的每一位取反。因此,按位取反的结果是补码形式的负数。
  5. 需要注意的是,JavaScript 中的位运算符(包括按位取反运算符~)只适用于32位有符号整数。对于64位整数或浮点数,位运算符的行为可能会有所不同。

注意:

        按位取反操作可能会导致溢出问题。在某些编程语言中,按位取反操作的结果可能与预期不符,特别是对于无符号整数类型。因此,在使用按位取反操作时,需要注意数据类型和溢出问题。

异或运算(XOR)是一种逻辑运算符,用于对两个操作数进行比较。它的运算规则如下:

  • 如果两个操作数的对应位相同(都为0或都为1),则结果为0。
  • 如果两个操作数的对应位不同(一个为0,一个为1),则结果为1。

异或运算有一些特性:

  1. 交换律:A ^ B = B ^ A
  2. 结合律:(A ^ B) ^ C = A ^ (B ^ C)
  3. 自反性:A ^ A = 0
  4. 零元素:A ^ 0 = A

异或运算在编程中有很多应用,例如:

  • 交换两个变量的值:可以使用异或运算来交换两个变量的值,而无需使用额外的临时变量。
  • 检测出现奇数次的元素:如果一个数组中只有一个元素出现了奇数次,而其他元素都出现了偶数次,可以使用异或运算来找出这个元素。
  • 加密和解密:异或运算可以用于简单的加密和解密算法。

异或运算在逻辑运算和位运算中都有广泛的应用,可以用于实现各种功能和算法。

3.3.5 逻辑运算符

逻辑运算符用于测定变量或值之间的逻辑。

x=2 y=3
运算符描述例子
&&(x<5 && y>1)为true
||(x<5 || y>1)为true
!(x!=y)为true
^异或(x^y)为true

逻辑与(AND)运算符:用符号&&表示。它的运算规则如下:

例如,表达式true && false的结果为false。

  • 如果两个操作数都为true,结果为true。
  • 如果有一个操作数为false,结果为false。

逻辑或(OR)运算符:用符号||表示。它的运算规则如下:

例如,表达式true || false的结果为true。

  • 如果两个操作数都为false,结果为false。
  • 如果有一个操作数为true,结果为true。

逻辑非(NOT)运算符:用符号!表示。它的运算规则如下:

例如,表达式!true的结果为false。

  • 如果操作数为true,结果为false。
  • 如果操作数为false,结果为true。

逻辑异或(XOR)运算符:用符号^表示,用于对两个逻辑值进行操作。它的运算规则如下:

  • 如果两个操作数的值相同(都为true或都为false),结果为false。
  • 如果两个操作数的值不同(一个为true,另一个为false),结果为true。

        逻辑运算符可以用于组合多个逻辑表达式,构建更复杂的逻辑条件。它们在条件语句、循环控制、逻辑判断等方面都有广泛的应用。

此外,逻辑运算符还有一些重要的特性:

  • 短路求值:逻辑与(AND)和逻辑或(OR)运算符都具有短路求值的特性。当使用逻辑与运算符时,如果第一个操作数为false,那么第二个操作数将不会被计算。当使用逻辑或运算符时,如果第一个操作数为true,那么第二个操作数将不会被计算。这个特性可以提高代码的效率,避免不必要的计算。
  • 运算符优先级:逻辑非(NOT)运算符的优先级最高,其次是逻辑与(AND)运算符,最后是逻辑或(OR)运算符。在复杂的逻辑表达式中,可以使用括号来明确运算的顺序。

3.3.6 比较运算符

相等运算符(==):用于检查两个值是否相等。如果相等,则返回true;否则返回false。 例如:

a = 5 b = 5 print(a == b) # 输出 True

不相等运算符(!=):用于检查两个值是否不相等。如果不相等,则返回true;否则返回false。 例如:

a = 5 b = 10 print(a != b) # 输出 True

大于运算符(>):用于检查一个值是否大于另一个值。如果大于,则返回true;否则返回false。 例如:

a = 5 b = 10 print(b > a) # 输出 True

小于运算符(<):用于检查一个值是否小于另一个值。如果小于,则返回true;否则返回false。 例如:

a = 5 b = 10 print(a < b) # 输出 True

大于等于运算符(>=):用于检查一个值是否大于或等于另一个值。如果大于或等于,则返回true;否则返回false。 例如:

a = 5 b = 5 print(a >= b) # 输出 True

小于等于运算符(<=):用于检查一个值是否小于或等于另一个值。如果小于或等于,则返回true;否则返回false。 例如:

a = 5 b = 10 print(b <= a) # 输出 False

比较运算符通常用于条件语句的判断和逻辑运算中。


3.4 条件语句

3.4.1 if...else

在JavaScript中,if语句也是一种条件语句,用于根据条件的真假来执行不同的代码块。JavaScript中if语句的基本语法如下:

if (condition) {
    // 如果条件为真,则执行这里的代码块
} else {
    // 如果条件为假,则执行这里的代码块
}

其中,condition 是一个表达式,用于表示判断条件。如果 condition 的值为真,则执行 if 代码块中的代码;否则,执行 else 代码块中的代码。

下面是一个简单的例题,可以供大家学习使用if语句:

键盘录入通过prompt()录入一个月份的值(number类型),判断它所属的季节

3,4,5 春季  6,7,8 夏季  9,10,11 秋季  12,1,2 冬季

示例代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			var month = window.prompt("请输入一个月份的值")
			month = parseInt(month)
			if (month>=3 && month<=5) {	
				alert("该月份属于春季")
			} else if (month>=6 && month<=8) {
				alert("该月份属于夏季")
			} else if (month>=9 && month<=11) {
				alert("该月份属于秋季")
			} else if (month==12 || month==1 || month==2) {
				alert("该月份属于冬季")
			} else {
				alert("输入的月份无效")
			}
			
		</script>
	</head>
	<body>
	</body>
</html>

3.4.2 switch..case

在JavaScript中,switch语句是一种多路分支语句,用于根据不同的条件执行不同的代码块。它可以替代多个if语句,使代码更加简洁和可读。switch语句的基本语法如下:

switch (expression) {
    case value1:
        // 如果expression等于value1,则执行这里的代码块
        break;
    case value2:
        // 如果expression等于value2,则执行这里的代码块
        break;
    // 可以继续添加更多的case语句
    default:
        // 如果expression不等于任何一个case的值,则执行这里的代码块
        break;
}

下面是一个简单的例题,可以供大家学习使用switch语句:

键盘录入星期的值,判断星期

示例代码:

!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
				var week_day = window.prompt("请您输入一个星期的值:") ;
				week_day = parseInt(week_day) ;
				var number = 3 ;
				switch(week_day){
				case 1:
					document.write("星期一") ;
					break ;
				case 2:
					document.write("星期二") ;
					break ;
				case number:
					document.write("星期三<br/>") ;
					break ;
				case 4:
					document.write("星期四<br/>") ;
					break ;
				case 5:
					document.write("星期五<br/>") ;
					break ;
				case 6:
					document.write("星期六<br/>") ;
					break ;
				case 7:
					document.write("星期日") ;
					break ;	
				default:
					document.write("对不起,地球没有这个星期!<br/>") ;
					break ;	
				}
		</script>
	</head>
	<body>
	</body>
</html>

在实际应用中,switch语句可以根据不同的条件执行不同的代码块,使代码更加简洁和可读。同时,switch语句还可以与break语句结合使用,以控制代码的执行流程。


3.5 循环语句

3.5.1 for循环

for循环是一种常用的循环语句,它允许你指定循环的起始条件、终止条件和每次循环后的操作。for循环的基本语法如下:

for (初始化表达式; 条件表达式; 更新表达式) {
    // 在条件为真时执行的代码块
}

初始化表达式用于初始化循环变量,条件表达式用于判断循环是否继续执行,更新表达式用于更新循环变量的值。循环会在每次迭代时执行一次代码块,直到条件表达式的值为假为止。

3.5.2 while循环

 while循环是一种先判断条件再执行代码块的循环语句。while循环的基本语法如下:

while (条件表达式) {
    // 在条件为真时执行的代码块
}

条件表达式用于判断循环是否继续执行,循环会在每次迭代时先判断条件表达式的值,如果为真则执行代码块,否则结束循环。

3.5.3 do-while循环

do-while循环是一种先执行代码块再判断条件的循环语句。do-while循环的基本语法如下:

do {
    // 在条件为真时执行的代码块
} while (条件表达式);

循环会先执行一次代码块,然后在每次迭代时判断条件表达式的值,如果为真则继续执行代码块,否则结束循环。

3.5.6 跳转控制语句

        在JavaScript中,跳转控制语句用于改变代码的执行流程,使代码可以跳过某些部分或者重复执行某些部分。JavaScript提供了几种常用的跳转控制语句,包括break、continue和return。

1.break语句: break语句用于终止当前循环或switch语句,并跳出其代码块。当执行到break语句时,程序会立即退出当前循环或switch语句,继续执行后续的代码。break语句通常与循环语句或switch语句配合使用。

示例代码:

for (let i = 1; i <= 5; i++) {
    if (i === 3) {
        break;
    }
    console.log(i);
}
// 输出:1 2

2.continue语句: continue语句用于跳过当前循环中的剩余代码,直接进入下一次迭代。当执行到continue语句时,程序会立即跳过当前迭代的剩余代码,继续执行下一次迭代。continue语句通常与循环语句配合使用。

示例代码:

for (let i = 1; i <= 5; i++) {
    if (i === 3) {
        continue;
    }
    console.log(i);
}
// 输出:1 2 4 5

3.return语句: return语句用于从函数中返回一个值,并终止函数的执行。当执行到return语句时,函数会立即停止执行,并将指定的值返回给调用者。return语句通常用于函数中,但也可以在任何代码块中使用。

示例代码:

function add(a, b) {
    return a + b;
}
let result = add(2, 3);
console.log(result);
// 输出:5

3.5.7 循环例题

for循环:求n的阶乘,(n为正整数):

代码:

var n = prompt("请输入一个正整数");
n = parseInt(n);
var m = 1;
for (var i=1;i<=n;i++){
	m*=i;
}
document.write(n+"的阶乘是:"+m)

结果:


while循环:求1-100之间的偶数和:

代码:

var sum1=0;
var b=1;
while(b<=100){
    b%2==0;
    sum1=sum1+b;
    b++;
}
document.write("1-100之间的偶数和为:"+sum1+"<hr/>")

结果:


do-while循环:浏览器中打印,hello,do-while(5次)

代码:

var i = 1;
do{
    document.write("hello,do-while<br/>");
    i++;
}while(i<=5);

结果:


while-if嵌套:计算水仙花数:

var m=0;
var n=100;
while(n<=999){
	var ge=n%10
	var shi=(Math.floor(n/10))%10
	var bai=(Math.floor(n/10/10))%10
	if(n==(ge*ge*ge + bai*bai*bai + shi*shi*shi)){
		m++
	document.write("第"+m+"次的水仙花是:"+n+"<br/>")
	}
	n++
}
document.write("水仙花的个数为:"+m+"个")

结果 :


3.6 函数

3.6.1 函数定义

        在JavaScript中,函数可以通过函数声明或函数表达式来定义。

函数声明:

function functionName(parameters) {
    // 函数体
}

函数表达式:

let functionName = function(parameters) {
    // 函数体
};

3.6.2 函数调用

定义函数后,可以通过函数名加上括号的形式来调用函数,并传递相应的参数。

functionName(arguments);

3.6.3 函数参数

函数可以接受零个或多个参数,参数用于传递数据给函数。函数可以在定义时指定参数,也可以在调用时传递参数。

function add(a, b) {
    return a + b;
}
let result = add(2, 3);
console.log(result); // 输出:5

3.6.4 函数返回值

函数可以通过return语句返回一个值,将计算结果或处理结果返回给调用者。如果函数没有显式指定返回值,则返回undefined。

function add(a, b) {
    return a + b;
}
let result = add(2, 3);
console.log(result); // 输出:5

3.6.5 函数作用域

JavaScript中的函数具有自己的作用域,函数内部定义的变量在函数外部不可访问,而函数外部定义的变量在函数内部也可访问。

let x = 10; // 全局变量

function foo() {
    let y = 20; // 局部变量
    console.log(x); // 可访问全局变量
    console.log(y); // 可访问局部变量
}

foo();
console.log(x); // 可访问全局变量
console.log(y); // 报错,无法访问局部变量

3.7 数组

在JavaScript中,数组是一种用于存储多个值的有序集合。数组可以包含任意类型的数据,包括数字、字符串、对象等。

3.7.1 创建数组

在JavaScript中,有多种方式可以创建数组:

1. 数组字面量:
   使用方括号 `[ ]` 来创建数组,并在方括号内用逗号分隔元素。

var array = [1, 2, 3];

2. Array构造函数:
   使用 `new Array()` 来创建数组,并在括号内传入元素。

var array = new Array(1, 2, 3);

   注意:如果只传入一个参数且该参数是一个数字,则创建一个指定长度的空数组。

var emptyArray = new Array(5); // 创建一个长度为5的空数组

3. Array.from()方法:
   使用 `Array.from()` 方法将类数组对象或可迭代对象转换为数组。

var arrayLike = {0: 'a', 1: 'b', 2: 'c', length: 3};
var array = Array.from(arrayLike);

4. 使用扩展运算符(Spread Operator):
   使用扩展运算符 `...` 可以将一个可迭代对象展开为数组。

var iterable = 'hello';
var array = [...iterable];

   注意:扩展运算符只能用于可迭代对象,而不是类数组对象。

5. 使用Array.of()方法:
   使用 `Array.of()` 方法根据传入的参数创建数组。

var array = Array.of(1, 2, 3);

这些是创建数组的一些常见方式,根据实际需求选择合适的方式来创建数组。

3.7.2 数组的应用

1.存储和访问数据: 数组可以用来存储一组相关的数据,例如数字、字符串、对象等。通过索引,可以方便地访问和修改数组中的元素。

var numbers = [1, 2, 3, 4, 5];
console.log(numbers[0]); // 输出:1 
numbers[1] = 10;
console.log(numbers); // 输出:[1, 10, 3, 4, 5]

2.迭代和遍历: 数组提供了多种遍历方法,可以对数组中的每个元素进行迭代操作。

(1)使用 for 循环遍历数组:

var numbers = [1, 2, 3, 4, 5];
for (let i = 0; i < numbers.length; i++) {
    console.log(numbers[i]);
}

(2)使用 forEach() 方法遍历数组:

var numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(element) {
    console.log(element);
});

3.添加和删除元素: 数组提供了多种方法来添加和删除元素。

(1)使用 push() 方法在数组末尾添加元素:

let numbers = [1, 2, 3];
numbers.push(4);
console.log(numbers); // 输出:[1, 2, 3, 4]

(2)使用 pop() 方法从数组末尾删除元素:

let numbers = [1, 2, 3, 4];
let lastElement = numbers.pop();
console.log(numbers); // 输出:[1, 2, 3]
console.log(lastElement); // 输出:4

(3)使用 splice() 方法在指定位置添加或删除元素:

let numbers = [1, 2, 3, 4, 5];
numbers.splice(2, 0, 6); // 在索引2的位置插入元素6
console.log(numbers); // 输出:[1, 2, 6, 3, 4, 5]
numbers.splice(3, 1); // 删除索引3的元素
console.log(numbers); // 输出:[1, 2, 6, 4, 5]

4.数组方法的应用:数组提供了许多方法来处理和操作数组。

使用 concat() 方法连接两个或多个数组:

var numbers1 = [1, 2, 3];
var numbers2 = [4, 5, 6];
var combinedNumbers = numbers1.concat(numbers2);
console.log(combinedNumbers); // 输出:[1, 2, 3, 4, 5, 6]

使用 slice() 方法提取数组的一部分:

var numbers = [1, 2, 3, 4, 5];
var subArray = numbers.slice(1, 4);
console.log(subArray); // 输出:[2, 3, 4]

使用 sort() 方法对数组进行排序:

var numbers = [3, 1, 4, 2, 5];
numbers.sort();
console.log(numbers); // 输出:[1, 2, 3, 4, 5]

使用 indexOf() 和 lastIndexOf() 方法查找元素在数组中的位置:

var numbers = [1, 2, 3, 4, 5, 3];
console.log(numbers.indexOf(3)); // 输出:2
console.log(numbers.lastIndexOf(3)); // 输出:5

3.8 对象

3.8.1 Date对象

在JavaScript中,Date对象用于处理日期和时间。它提供了一些方法和属性,用于获取、设置和操作日期和时间。下面是一些常用的Date对象的方法和属性:

构造函数:

  • new Date():创建一个表示当前日期和时间的Date对象。
  • new Date(value):根据给定的值创建一个Date对象,值可以是表示日期和时间的字符串、时间戳或毫秒数。
  • new Date(year, month, day, hour, minute, second, millisecond):根据给定的年、月、日、时、分、秒和毫秒创建一个Date对象。

方法:

  • getDate():返回日期的天数(1-31)。
  • getMonth():返回日期的月份(0-11)。
  • getFullYear():返回日期的年份。
  • getHours():返回时间的小时数(0-23)。
  • getMinutes():返回时间的分钟数(0-59)。
  • getSeconds():返回时间的秒数(0-59)。
  • getMilliseconds():返回时间的毫秒数(0-999)。
  • getTime():返回表示日期和时间的毫秒数(从1970年1月1日开始计算的时间戳)。
  • getTimezoneOffset():返回当前时区与UTC时间的分钟差。
  • setDate(day):设置日期的天数。
  • setMonth(month):设置日期的月份。
  • setFullYear(year):设置日期的年份。
  • setHours(hour):设置时间的小时数。
  • setMinutes(minute):设置时间的分钟数。
  • setSeconds(second):设置时间的秒数。
  • setMilliseconds(millisecond):设置时间的毫秒数。
  • setTime(milliseconds):根据给定的毫秒数设置日期和时间。
  • toDateString():将日期部分转换为字符串。
  • toTimeString():将时间部分转换为字符串。
  • toString():将日期和时间转换为字符串。

示例代码:

var now = new Date();
console.log(now); // 输出:当前日期和时间的字符串表示

var date = new Date("2021-01-01");
console.log(date); // 输出:Fri Jan 01 2021 08:00:00 GMT+0800 (中国标准时间)

var timestamp = Date.now();
console.log(timestamp); // 输出:当前日期和时间的时间戳

var year = now.getFullYear();
var month = now.getMonth();
var day = now.getDate();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
var millisecond = now.getMilliseconds();
console.log(year, month, day, hour, minute, second, millisecond); // 输出:当前日期和时间的年、月、日、时、分、秒、毫秒数

now.setFullYear(2022);
now.setMonth(11);
now.setDate(31);
now.setHours(23);
now.setMinutes(59);
now.setSeconds(59);
now.setMilliseconds(999);
console.log(now); // 输出:Sat Dec 31 2022 23:59:59 GMT+0800 (中国标准时间)

var dateString = now.toDateString();
var timeString = now.toTimeString();
var dateTimeString = now.toString();
console.log(dateString, timeString, dateTimeString); // 输出:日期字符串、时间字符串、日期和时间字符串

3.8.2 Math对象

在JavaScript中,Math对象是一个内置对象,提供了一些数学相关的属性和方法,可以用于执行各种数学运算。下面是一些常用的Math对象的属性和方法:

属性:

  • Math.PI:表示圆周率π的近似值,约为3.14159。
  • Math.E:表示自然对数的底数e的近似值,约为2.71828。

方法:

  • Math.abs(x):返回x的绝对值。
  • Math.ceil(x):返回大于或等于x的最小整数。
  • Math.floor(x):返回小于或等于x的最大整数。
  • Math.round(x):返回最接近x的整数。
  • Math.max(x1, x2, ...):返回一组数中的最大值。
  • Math.min(x1, x2, ...):返回一组数中的最小值。
  • Math.pow(x, y):返回x的y次幂。
  • Math.sqrt(x):返回x的平方根。
  • Math.random():返回一个0到1之间的随机数。
  • Math.sin(x):返回x的正弦值。
  • Math.cos(x):返回x的余弦值。
  • Math.tan(x):返回x的正切值。
  • Math.log(x):返回x的自然对数。
  • Math.exp(x):返回e的x次幂。

示例代码:

console.log(Math.PI); // 输出:3.141592653589793
console.log(Math.abs(-5)); // 输出:5
console.log(Math.ceil(4.2)); // 输出:5
console.log(Math.floor(4.9)); // 输出:4
console.log(Math.round(4.5)); // 输出:5
console.log(Math.max(2, 4, 6)); // 输出:6
console.log(Math.min(2, 4, 6)); // 输出:2
console.log(Math.pow(2, 3)); // 输出:8
console.log(Math.sqrt(16)); // 输出:4
console.log(Math.random()); // 输出:0.1234567890(随机数)
console.log(Math.sin(Math.PI / 2)); // 输出:1
console.log(Math.cos(Math.PI)); // 输出:-1
console.log(Math.tan(0)); // 输出:0
console.log(Math.log(Math.E)); // 输出:1
console.log(Math.exp(1)); // 输出:2.718281828459045


第四章 结尾

4.1最后附上一道经典算法题(百钱买百鸡)

题目如下:

假设有一个人拿着100元去买鸡,鸡的价格分别为公鸡5元一只、母鸡3元一只和小鸡1元三只。现在要用100元买100只鸡,问公鸡、母鸡和小鸡各买多少只?

思路:

设公鸡的数量为x,母鸡的数量为y,小鸡的数量为z。

根据题目条件可以得到以下三个方程式:

  1. 5x + 3y + z/3 = 100 (总价格为100元)
  2. x + y + z = 100 (总数量为100只)
  3. z % 3 = 0 (小鸡的数量必须是3的倍数)

附源代码:

var x,y,z
for(y=0;y<=33;y++){
    for(x=0;x<=22;x++){
		z=100-x-y    //计算小鸡的数量
		if((z%3==0) && ((5*x+3*y+z/3)==100)){	//满足的条件
		document.write("公鸡的数量是:"+x+",母鸡的数量是:"+y+",小鸡的数量是"+z+"<hr/>")
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值