当前位置: 首页 > article >正文

Javascript:数组和函数

数组

创建数组

使用new创建

let arr=new array(数组大小);

直接赋值创建 

    let Arr2=[];let Arr3=[1,'A',"HELLLO"];

这里JS的数组里面的元素属性可以各不相同 

演示代码

<script>let Arr1=new Array(5);let Arr2=[];let Arr3=[1,'A',"HELLLO"];console.log(Arr1);console.log(Arr2);console.log(Arr3);
</script>

演示结果

此时我们创建了一个数组,但是 

获取数组元素 

获取数组元素大致就像C++

演示代码

<script>let Arr1=["苹果","香蕉","榴莲"];console.log(Arr1[1]);console.log(Arr1[-1]);console.log(Arr1[3]);console.log(typeof(Arr1));Arr1="Hello,World";console.log(Arr1);console.log(typeof(Arr1));
</script>

演示结果

<script>let arr=[];arr.length=10;console.log(arr);
</script>

 

这里可以看出如果数组越界访问,那么访问的元素就是未定义属性undefined

如果直接给数组赋值,那么会改变数组的属性

增加数组的元素 

改变数组的length的值

演示代码

<script>let arr=[];arr.length=10;console.log(arr);
</script>

演示结果

 

通过下标新增 

赋值那个下表的元素,那么数组空间就扩大到哪里

<script>let arr=[];arr[10]=1;console.log(arr);
</script>

演示结果

 

 通过push增加元素

演示代码

<script>let array=[];let arr=[2,6,7,9,10,5];for(let i=0;i<arr.length;i++){if(arr[i]%2==0){array.push(arr[i]);}}console.log(array);
</script>

演示结果

 删除数组的元素

splice

使用格式

    arr.splice(2,3);

演示代码

<script>let arr=[1,5,9,3,10,4,2,8,2];arr.splice(2,3);console.log(arr);
</script>

演示结果

 

函数 

创建函数的格式

function 函数名(参数名)//参数名不需要指明类型直接加名字
{内容
}

 演示代码

<script>function func(){alert("Hello,World");return 100;}let a=func();alert(a);
</script>

演示结果

 


 

 关于参数个数

如果实参多,那么多出来的实参没有用,如果形参多,多出来的形参是undefined

演示代码

<script>function func(num1,num2,num3){console.log(typeof(num1));console.log(typeof(num2));console.log(typeof(num3));}func(1,2);
</script>

演示结果

 

这里num3是多出来的形参,被设置成了undefined

函数表达式 

函数的另一种表达形式,定义一个匿名函数,然后设立一个参数去替代它

使用格式

<script>let func=function (num1,num2,num3){return num1+num2;}console.log(func(1,5));console.log(typeof(func));
</script>

演示结果 

 

我们可以看到整个func能承接函数的返回值,并且它的类型是function类型

作用域

作用域分别为全局作用域和局部作用域

在函数内定义的变量只在函数内生效称为局部作用域

在<script>内定义的变量在整个<script>都生效

演示代码

<script>let num1=20;function func(){let num1=30;}func();console.log(num1);
</script>

演示结果

 这里虽然运行了func()但是num1的值并没有得到更改

如果函数内的变量不加let,那么变量就为全局变量

演示代码

<script>let num1=20;function func(){num1=30;}func();console.log(num1);
</script>

演示结果

 这里的这个num1的值改变成了30

作用域链

当函数使用一个变量时,如果在函数内找不到变量,那么就会去函数外面的函数找,如果找不到就会一直找,知道找完<script>中的全局变量为止

演示代码

<script>let num1=20;//第三次去掉function func1(){let num1=30;//第二次去掉function func2(){let num1=40;//第一次去掉console.log(num1);}func2();}func1();
</script>

 这里我们分别去掉三次

每次的结果为

40 30 20

对象 

常规对象创建

 对象创建的格式

let 对象名={参数:内容,参数:内容
};

演示代码

<script>let OB={height:100,width:500,YES:function(){console.log("Hello,World");}}OB.YES();
</script>

演示结果

new Object

new Object可以直接为我们创建一个对象,但对象里面的元素需要我们自己添加

使用格式

    let OJ=new Object;

演示代码

 

<script>let OJ=new Object;OJ.NUM1=15;OJ.NUM2="ABC";OJ.NUM3=function(){console.log(OJ.NUM2)};OJ.NUM3();
</script>

演示结果

 

 使用构造函数创建对象

当我需要定义很多个对象,但这些对象的很多元素都相同时,我们需要用构造函数来提升我们的效率

使用格式

function 构造函数名(形参) {this.属性 = 值;this.方法 = function...
}
var obj = new 构造函数名(实参);

代码演示

<script>function name(params1,params2,params3) {this.num1=params1;this.num2=params2;this.num3=function(){alert("Hello,World")};}let obj1=new name("HHHH","GGGG");let obj2=new name("OOOO","AAAA");let obj3=new name("LLLL","QQQQ");console.log(obj1.num1);console.log(obj1.num2);console.log(obj2.num1);console.log(obj2.num2);console.log(obj3.num1);console.log(obj3.num2);obj1.num3=function(){alert("Hello,GCH")};obj1.num3();obj2.num3=function(){alert("Hello,GCJ")};obj2.num3();obj3.num3=function(){alert("Hello,GSM")};obj3.num3();
</script>

演示结果

 


 


 

class构造方法

使用class,我们需要用到关键字constructor,类名首字符必须大写

使用格式

    class head{constructor(num1,num2){this.head1=num1;this.head2=num2;}}

 其中constructor就是class的构造函数,而head1和head2就是定义的内置类型

使用class构造对象

使用格式

我们需要new来构造对象

let 对象名=new 类名(实参,实参);

演示代码

<script>class head{constructor(num1,num2){this.head1=num1;this.head2=num2;}}let obj=new head(1,2);console.log(obj.head1);console.log(obj.head2);
</script>

演示结果

 static

static在我们C++中用于类中那么定义的变量就是静态变量,class里定义的话,那么这个变量不属于任何一个定义出来的对象

演示代码

<script>class head{constructor(num1,num2){this.head1=num1;this.head2=num2;}static head3=50;}let obj=new head(1,2);console.log(obj.head1);console.log(obj.head2);console.log(head.head3);
</script>

演示结果

 class的继承

class也可以像C++那样继承,不过这里需要用到两个关键字

extend
super

 

 

 

 

 

 

相关文章:

Javascript:数组和函数

数组 创建数组 使用new创建 let arrnew array(数组大小); 直接赋值创建 let Arr2[];let Arr3[1,A,"HELLLO"]; 这里JS的数组里面的元素属性可以各不相同 演示代码 <script>let Arr1new Array(5);let Arr2[];let Arr3[1,A,"HELLLO"];console.…...

无锁秒杀系统设计:基于Java的高效实现

引言 在电商促销活动中&#xff0c;秒杀场景是非常常见的。为了确保高并发下的数据一致性、性能以及用户体验&#xff0c;本文将介绍几种不依赖 Redis 实现的无锁秒杀方案&#xff0c;并提供简化后的 Java 代码示例和架构图。 一、基于数据库乐观锁机制 ✅ 实现思路&#xf…...

NCCL N卡通信机制

转自我的博客&#xff1a;https://shar-pen.github.io/2025/05/05/torch-distributed-series/nccl_communication/ from IPython.display import Image import logging import torch import torch.distributed as distpytorch 分布式相关api torch.distributed.init_process_…...

Alpha3DCS公差分析系统_国产替代的3D精度管控方案-SNK施努卡

随着智能制造发展规划的深入推进&#xff0c;工业软件国产化替代已上升为国家战略。在公差分析这一细分领域&#xff0c;长期被国外软件垄断的局面正被打破。 苏州施努卡自主研发的Alpha3DCS&#xff0c;凭借完全自主知识产权和军工级安全标准&#xff0c;成为国内实现三维公差…...

ABB电机控制和保护单元与Profibus DP主站转Modbus TCP网关快速通讯案例

ABB电机控制和保护单元与Profibus DP主站转Modbus TCP网关快速通讯案例 在现代工业自动化系统中&#xff0c;设备之间的互联互通至关重要。Profibus DP和Modbus TCP是两种常见的通信协议&#xff0c;分别应用于不同的场景。为了实现这两种协议的相互转换&#xff0c;Profibus …...

深入理解 Java 适配器模式:架构设计中的接口转换艺术

一、适配器模式的核心概念与设计思想 在软件开发的演进过程中&#xff0c;我们经常会遇到这样的场景&#xff1a;系统需要整合一个现有的类&#xff0c;但其接口与系统所需的接口不兼容。此时&#xff0c;适配器模式&#xff08;Adapter Pattern&#xff09;就成为解决接口不匹…...

skopeo工具详解

Skopeo 是一个功能强大的命令行工具&#xff0c;用于操作容器镜像及镜像仓库&#xff0c;支持多种容器镜像格式&#xff08;如 Docker、OCI&#xff09;&#xff0c;能够在不下载完整镜像的情况下直接与远程仓库交互。以下是其主要功能、使用场景及操作指南&#xff1a; 一、核…...

vue 中的ref

vue 中的ref vue 中的ref 1. ​​ref​​ ** 的基本作用** 在 Vue 中&#xff0c;ref 是用来获取 DOM 元素或者组件实例的一种方式。对于 <el-form> 组件&#xff0c;通过 ref 可以获取到该表单组件的实例&#xff0c;进而调用表单组件提供的各种方法和访问其属性。 …...

什么是静态住宅IP?为什么静态住宅IP能提高注册通过率?

在全球最大的电商平台亚马逊上&#xff0c;竞争异常激烈&#xff0c;每一位卖家都渴望顺利通过平台的审核并成功开设店铺。在这个过程中&#xff0c;选择合适的IP地址成为了一个容易被忽视但至关重要的因素。静态住宅IP作为一种特殊的网络地址类型&#xff0c;对于提升亚马逊卖…...

数据库审计如何维护数据完整性:7 种工具和技术

在当今的数字环境中&#xff0c;数据库审计是维护数据完整性的一个重要方面。本文探讨了专业人员用来确保数据库系统安全性和可靠性的基本工具和技术。通过专家的独到见解&#xff0c;读者将发现用于监控活动、实施访问控制以及利用区块链等尖端技术进行防篡改审计的行之有效的…...

langchain 接入国内搜索api——百度AI搜索

为什么使用百度AI搜索 学习langchain的过程中&#xff0c;遇到使用search api的时候&#xff0c;发现langchain官方文档中支持的搜索工具大多是国外的&#xff0c;例如google search或bing search&#xff0c;收费不说&#xff0c;很多还连接不上&#xff08;工具 | LangChain…...

0基础 | L298N电机驱动模块 | 使用指南

引言 在嵌入式系统开发中&#xff0c;电机驱动是一个常见且重要的功能。L298N是一款高电压、大电流电机驱动芯片&#xff0c;广泛应用于各种电机控制场景&#xff0c;如直流电机的正反转、调速&#xff0c;以及步进电机的驱动等。本文将详细介绍如何使用51单片机来控制L298N电…...

【金仓数据库征文】金仓数据库:创新驱动,引领数据库行业新未来

一、引言 在数字化转型的时代洪流中&#xff0c;数据已跃升为企业的核心资产&#xff0c;宛如企业运营与发展的 “数字命脉”。从企业日常运营的精细化管理&#xff0c;到战略决策的高瞻远瞩制定&#xff1b;从客户关系管理的深度耕耘&#xff0c;到供应链优化的全面协同&…...

大模型系列(五)--- GPT3: Language Models are Few-Shot Learners

论文链接&#xff1a; Language Models are Few-Shot Learners 点评&#xff1a; GPT3把参数规模扩大到1750亿&#xff0c;且在少样本场景下性能优异。对于所有任务&#xff0c;GPT-3均未进行任何梯度更新或微调&#xff0c;仅通过纯文本交互形式接收任务描述和少量示例。然而&…...

Qt QCheckBox 使用

1.开发背景 Qt QCheckBox 是勾选组件&#xff0c;具体使用方法可以参考 Qt 官方文档&#xff0c;这里只是记录使用过程中常用的方法示例和遇到的一些问题。 2.开发需求 QCheckBox 使用和踩坑 3.开发环境 Window10 Qt5.12.2 QtCreator4.8.2 4.功能简介 4.1 简单接口 QChec…...

Java SolonMCP 实现 MCP 实践全解析:SSE 与 STDIO 通信模式详解

一、MCP简介 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;是由Anthropic公司于2024年推出的开放标准&#xff0c;旨在统一AI模型与外部数据源、工具之间的通信方式。MCP提供了一套规范化的接口&#xff0c;使大语言模型&#xff08;LLM&…...

系统架构-面向服务架构(SOA)

概述 服务指的是系统对外提供的功能集 从应用的角度定义&#xff0c;可以认为SOA是一种应用框架&#xff0c;将日常业务划分为单独的业务功能和流程&#xff08;即服务&#xff09;&#xff0c;SOA使用户可以构建、部署和整合这些服务。 从软件的基本原理定义&#xff0c;SO…...

AJAX原理

AJAX使用XHR 对象和服务器进行数据交互 XHR <p class"my-p"></p><script>const xhr new XMLHttpRequest()xhr.open(GET,http://hmajax.itheima.net/api/province)xhr.addEventListener(loadend,()>{// console.log(xhr.response)const data …...

Paddle Serving|部署一个自己的OCR识别服务器

前言 之前使用C部署了自己的OCR识别服务器&#xff0c;Socket网络传输部分是自己写的&#xff0c;回过头来一看&#xff0c;自己犯傻了&#xff0c;PaddleOCR本来就有自己的OCR服务器项目&#xff0c;叫PaddleServing&#xff0c;这里记录一下部署过程。 1 下载依赖环境 1.1 …...

Web开发—Vue工程化

文章目录 前言 Vue工程化 一、介绍 二、环境准备 1.介绍create-vue 2.NodeJS安装 3.npm介绍 三&#xff0c;Vue项目创建 四&#xff0c;项目结构 五&#xff0c;启动项目 六&#xff0c;Vue项目开发流程 七&#xff0c;API风格 前言 Vue工程化 前面我们在介绍Vue的时候&#…...

Word如何制作三线表格

1.需求 将像这样的表格整理成论文中需要的三线表格。 2.直观流程 选中表格 --> 表格属性中的边框与底纹B --> 在设置中选择无&#xff08;重置表格&#xff09;–> 确定 --> 选择第一行&#xff08;其实是将第一行看成独立表格了&#xff0c;为了设置中线&…...

毫米波雷达点云SLAM系统

毫米波雷达点云SLAM系统 基于毫米波雷达点云数据的三维SLAM(同步定位与建图)系统&#xff0c;用于狭窄环境如室内和地下隧道的三维建图。 项目概述 本项目实现了一个完整的SLAM系统&#xff0c;利用毫米波雷达采集的点云数据进行实时定位和环境三维重建。系统特别针对狭窄空…...

5 从众效应

引言 有一个成语叫做三人成虎&#xff0c;意思是说&#xff0c;有三个人谎报市上有老虎&#xff0c;听者就信以为真。这种人在社会群体中&#xff0c;容易不加分析地接受大多数人认同的观点或行为的心理倾向&#xff0c;被称为从众效应。 从众效应&#xff08;Bandwagon Effec…...

【实战教程】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南

&#x1f525; 本文详细讲解如何从零搭建一个完整的DeepSeek AI对话系统&#xff0c;包括Spring Boot后端和React前端&#xff0c;适合AI开发入门者快速上手。即使你是编程萌新&#xff0c;也能轻松搭建自己的AI助手&#xff01; &#x1f4da;博主匠心之作&#xff0c;强推专栏…...

用C语言实现的——一个支持完整增删查改功能的二叉排序树BST管理系统,通过控制台实现用户与数据结构的交互操作。

一、知识回顾 二叉排序树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;&#xff0c;又称二叉查找树或二叉搜索树&#xff0c;是一种特殊的二叉树数据结构。 基本性质&#xff1a; ①有序性 对于树中的每个节点&#xff0c;其左子树中所有节点的值都小于该节点的…...

排队论基础一:马尔可夫排队模型

排队论基础一:马尔可夫排队模型 介绍基本概念状态概率分布平均队列人数与平均排队人数平均停留时间与平均等待时间Little公式(Little Law)生灭过程生灭过程排队系统(马尔可夫排队模型)状态平衡方程介绍 最近写论文需要,学了一下排队过程模型。其实这些内容本科的时候我都…...

论文阅读笔记——ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors

RoboGround 论文 一类中间表征是语言指令&#xff0c;但对于空间位置描述过于模糊&#xff08;“把杯子放桌上”但不知道放桌上哪里&#xff09;&#xff1b;另一类是目标图像或点流&#xff0c;但是开销大&#xff1b;由此 GeoDEX 提出一种兼具二者的掩码。 相比于 GR-1&#…...

系统架构设计(四):架构风格总结

黑板 概念 黑板体系架构是一种用于求解复杂问题的软件架构风格&#xff0c;尤其适合知识密集型、推理驱动、数据不确定性大的场景。 它模拟了人类专家协同解决问题的方式&#xff0c;通过一个共享的“黑板”协同多个模块&#xff08;专家&#xff09;逐步构建解决方案。 组…...

『 测试 』测试基础

文章目录 1. 调试与测试的区别2. 开发过程中的需求3. 开发模型3.1 软件的生命周期3.2 瀑布模型3.2.1 瀑布模型的特点/缺点 3.3 螺旋模型3.3.1 螺旋模型的特点/缺点 3.4 增量模型与迭代模型3.5 敏捷模型3.5.1 Scrum模型3.5.2 敏捷模型中的测试 4 测试模型4.1 V模型4.2 W模型(双V…...

robomaster机甲大师--电调电机

文章目录 C620电调ID设置速率 电调发送报文电调接收报文cubemx程序初始化发送接收 C620电调 ID设置 速率 1Mbps 电调发送报文 发送的数据为控制电机的输出电流&#xff0c;需要将can数据帧的ID设置为0x200 电调接收报文 机械角度&#xff1a;电机的0到360度映射到0到几千转…...