JavaScript---day 01-2
JavaScript:数组:
JS 中创建数组有两种方式:
-
利用 new 创建数组
var 数组名 = new Array() ;
var arr = new Array(); // 创建一个新的空数组注意 Array () ,A 要大写
-
利用数组字面量创建数组
//1. 使用数组字面量方式创建空的数组
var 数组名 = [];// 等价于var arr = new Array();
//2. 使用数组字面量方式创建带初始值的数组
var 数组名 = ['小白','小黑','大黄','瑞奇'];-
数组的字面量是方括号 [ ]
-
声明数组并赋值称为数组的初始化
-
这种字面量方式也是我们以后最多使用的方式
-
-
数组元素的类型
数组中可以存放任意类型的数据,例如字符串,数字,布尔值等。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>对象:数组</title> <script> //数组创建几种方式: var arr = new Array(); //或者 var arr2 = []; //或者初始化:数组中可以存放任意类型的数据,例如字符串,数字,布尔值等。 var arr3 = ['1', 2, 35, 4, '2']; //索引 (下标) :用来访问数组元素的序号(数组下标从 0 开始)。 // 定义数组 var arrStus = [1, 2, 3]; // 获取数组中的第2个元素 alert(arrStus[1]); //可以下标越界取元素,只是都是undefined。。。不会报错 //或者:数组[ 数组.length ] = 新数据; arrStus.push(15);//加入元素 //遍历 var ret=''; console.log(arrStus.length) for (var k = 0; k < arrStus.length; k++) { ret += arrStus[k]+","; } console.log(ret); //删除元素 arrStus.pop(); console.log(arrStus.length); ret=''; for (var k = 0; k < arrStus.length; k++) { ret += arrStus[k]+","; } console.log(ret); // for in循环不仅可以遍历数组,还可以遍历对象,但for in存在一些陷阱,比如它会在遍历完元素之后, //还会对数组或对象的prototype中的属性进行遍历,所以,for in 更像是为对象遍历而设计的。 //对于数组的遍历,不提倡 for in。 //for of (ES6) //ES6中引入了 for ... of 循环,以替代 for...in 和 forEach() , //允许对 Array(数组)、String(字符串)、Maps(映射)、Sets(集合)等可迭代的数据结构进行遍历。 // for(var k of arr) 中的 k ,就是数组 arr 中的元素,而不是数组的下标。 //forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。 //forEach() 对于空数组是不会执行回调函数的。 //回调函数 function (v, k) 中的 k 是数组的下标,v 是数组元素值。 //Object.keys.forEach() 主要是用于遍历对象,获取对象的属性名,对于遍历数组意义不大。 </script> <body> </body> </html>
函数的概念
在 JS 里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然 for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用 JS 中的函数。
函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。
-
-
形参简单理解为:不用声明的变量
-
小结:
-
函数可以带参数也可以不带参数
-
声明函数的时候,函数名括号里面的是形参,形参的默认值为 undefined
-
调用函数的时候,函数名括号里面的是实参
-
多个参数中间用逗号分隔
-
形参的个数可以和实参个数不匹配,但是结果不可预计,我们尽量要匹配
-
在使用 return 语句时,函数会停止执行,并返回指定的值
-
break ,continue ,return 的区别
-
break :结束当前的循环体(如 for、while)
-
continue :跳出本次循环,继续执行下次循环(如 for、while)
-
return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码
arguments的使用
当不确定有多少个参数传递的时候,可以用 arguments 来获取。JavaScript 中,arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参。arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点:
-
具有 length 属性
-
按索引方式储存数据
-
不具有数组的 push , pop 等方法
注意:在函数内部使用该对象,用此对象获取函数调用时传的实参。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js函数</title> <script> //函数式js中的最小功能单位 //创建函数 function add(num1, num2) { return num1 + num2; } console.log(add(1, 2)); //意外来了 console.log(add(1, 2, 3));//不报错,而且调用函数啦。。执行的是前两个参数。 //实参可以和形参参数不匹配,说明JavaScript的函数参数列表不可以作为鉴别不同方法的特征。。。只能函数名区分 console.log(add());//结果为NAN..如果实参小于形参,那就是未传递的形参就是undefined。。任何数字+undefined都是NAN /* 内置对象: */ //运行js代码的时候,由运行环境已经创建好的一些对象。。。我们可以直接使用 //获取函数的实参个数 function add2(num3, num4) { console.info(arguments);//arguments类似于java的可变形参列表。在js中可以当成一个数组来使用。。。(伪数组) //比较arguments是不是一个数组 console.info([1, 3, 5] instanceof Array);//instanceof 对复杂数据类型做所属判断用的,和java一致、 console.info(arguments instanceof Array);//false。。他不是一个数组。使用方式类似于数组 console.log("===========arguments,不是数组,却是可以和数组一样的遍历方式==============") //arguments不具有数组的 push , pop 等方法 var element = 0; for (let index = 0; index < arguments.length; index++) { element += arguments[index]; } console.log(element); return num3 + num4; } add2(123, 3243, 345643645, 657567, 75345353, 234); //匿名函数 var temp = function (x1, x2) { return x2 - x1; } //可以这样调用 console.log(typeof temp(55, 11));//结果是number console.log(typeof temp);//function console.log(temp(55, 11));//-44 //匿名函数调用方式二:自执行 var temx = (function (x1, x2) { return x2 - x1; })(1, 5); //函数体()..... console.log(temx); //函数作为参数传递进去:函数作为参数和返回值 function cal(func1, numb1, numb2) { return func1(numb1, numb2); } function funcadd(number1, number2) { return number1 + number2; } var result = cal(funcadd, 1, 21); //除零是无穷大: (function (numx, numy) { console.log(numx / numy); })(1, 0);//Infinity //函数嵌套 function distance(x1, y1, x2, y2) { function square(x) { return x * x; } return Math.sqrt(square(x1 - x2) + square(y1 - y2)); } var result1 = distance(0, 0, 3, 4); //外层函数不能调用:函数内层函数。。。 // console.log(square(1));报错。。。。。 console.log(result1); // 5 function swtic(op, numxx, numyy) { switch (op) { case '+': return numxx + numyy; case '-': return numxx - numyy; case '*': return numxx * numyy; case '/': return numxx / numyy; } } </script> </head> <body> <!-- js函数 --> </body> </html>
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南