javascript-基础 (三)

循环-for

for 循环-基本使用
1. for循环语法
  作用: 重复执行代码
  好处: 把声明起始值、循环条件、变化值写到一起,让人一目了然 它是最常使用的循环形式
for (变量起始;终止条件;变量变化量) {
    //循环体
}
例子:
for(let i = 1; i<=3; i++){
         document.write('年薪过万')
     }  
2. 退出循环
  continue 退出本次循环, 一般用于排除或者跳过某一个选项的时候, 可以使用continue
  break 退出整个for循环, 一般用于结果已经得到, 后续的循环不需要的时候可以使用
了解:
1. while(true) 来构造“无限”循环,需要使用break退出循环
2. for(;;) 也可以来 构造“无限”循环,同样需要使用break退出循环
当如果 明确 了循环的次数的时候推荐使用for循环
  不明确 循环的次数的时候推荐使用while循环
for 循环嵌套
for(外部声明记录循环次数的变量;循环条件;变化值) {
    for(内部声明记录循环次数的变量;循环条件;变化值) {
        循环体
}
}
//打印五行五列的星星
         for(let i = 1;i <= 5; i++){
             for(let j = 1;j <= 5; j++){
             document.write('★')         
         } 
        document.write('<br>')
         }

数组

数组:(Array)是一种可以按顺序保存数据的数据类型

好处:场景:如果有多个数据可以用数组保存起来,然后放到一个变量中,管理非常方便

数组的基本使用
  1. 声明语法
//两种写法
let 数组名 = [数据1,数据2,...,数据n]
let arr = new Array(数据1,数据2,...,数据n)
例子:
let names = ['小明','小刚','小李']
数组是按顺序保存,所以每个数据都有自己的编号
计算机中的编号从0开始,所以小明的编号为0,小刚编号为1,以此类推
  在数组中,数据的编号也叫 索引或下标
  数组可以存储任意类型的数据
2. 取值语法
数组名[下标]
let names = ['小明','小刚','小李']
names[0]  //小明
names[1]  //小刚
通过下标取数据
  取出来是什么类型的,就根据这种类型特点来访问
3. 一些术语:
元素:数组中保存的每个数据都叫数组元素
下标:数组中数据的编号
  长度:数组中数据的个数,通过数组的length属性获得

 

 

 

4. 遍历数组(重点)
  用循环把数组中每个元素都访问到,一般会用for循环遍历
  语法:
for(let i = 0; i < 数组名.length; i++) {
    数组名[i]
}
let nums = [10,20,30,40,50]
for (let i = 0; i < nums.length; i++) {
        document.write(nums[i])
}
操作数组
数组本质是数据集合, 操作数据无非就是 增 删 改 查
语法:

操作数组-新增
数组.push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度 (重点)
语法:
arr.push(元素1,...,元素n)

let arr = ('red','green')
arr.push('pink','yellow')
console.log(arr)  //['red','green','pink','yellow']
arr.unshift(新增的内容) 方法将一个或多个元素添加到数组的 开头 ,并返回该数组的新长度
语法:
arr.unshift(元素1,...,元素n)

let arr = ['red','green']
arr.unshift('pink')
console.log(arr)  //['pink','red','green']
操作数组-删除
数组. pop() 方法从数组中删除最后一个元素,并返回该元素的值
语法:
arr.pop()  //删除数组最后一个元素

let arr = ['red',green]
arr.pop()
console.log(arr)  //['red']
数组. shift() 方法从数组中删除第一个元素,并返回该元素的值
语法:
arr.shift()  //删除数组第一个元素

let arr = ['red','green']
arr.shift()
console.log(arr)  //['green']
数组. splice() 方法 删除指定元素 ( 开发很常用
语法:
arr.splice(start,delectCount)
arr.splice(起始位置,删除几个元素)
start 起始位置:
指定修改的开始位置(从0计数)
  deleteCount:
  表示要移除的数组元素的个数
  可选的。 如果省略则默认从指定的起始位置删 除到最后

数组排序
数组. sort() 方法可以排序
语法:
let arr = [4, 2, 5, 1, 3]
// 1.升序排列写法
arr.sort(function (a, b) {
return a - b
})
console.log(arr) // [1, 2, 3, 4, 5]
// 降序排列写法
arr.sort(function (a, b) {
return b - a
})
console.log(arr) // [5, 4, 3, 2, 1]

函数

为什么需要函数

函数:
function,是被设计为 执行特定任务 的代码块
好处: 精简代码方便复用

函数使用

函数的声明语法
function 函数名() {
    函数体
}
例子:
function sayHi() {
    document.write('ha~~')
}
函数名命名规范
  和变量命名基本一致
  尽量小驼峰式命名法
  前缀应该为动词
  命名建议:常用动词约定
function getName() {}
function addSquares() {}

函数的调用语法
//函数调用,这些函数体内的代码逻辑会被执行
函数名()
注意:声明(定义)的函数必须调用才会真正被执行, 使用 () 调用函数
//函数一次声明可以调用多次,每一次函数调用 函数体里面的代码会重新执行
sayHi()
sayHi()

函数传参

若函数完成功能需要调用者传入数据,那么就需要用有参数的函数
这样可以极大提高函数的灵活性
声明语法
function 函数名(参数列表) {
    函数体
} 

//单个参数
function getSquare(num1) {
    document.write(num1 * num1)
}
//多个参数
function getSquare(num1,num2) {
    document.write(num1 * num2)
}
参数列表
  传入数据列表
  声明这个函数需要传入几个数据
  多个数据用逗号隔开
调用语法
函数名(传递的参数列表)
getSquare(1,2)
//调用函数时,需要传入几个数据就写几个,用逗号隔开

形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
形参可以理解为是 在这个函数内声明的 变量 (比如 num1 = 10)实参可以理解为是给这个变量赋值
开发中尽量保持形参和实参个数一致
我们曾经使用过的 alert('打印'), parseInt('11'), Number('11') 本质上都是函数调用的传参
参数默认值
形参: 可以看做变量,但是如果一个变量不给值,默认是
undefined
但是如果做用户不输入实参,则出现 undefined + undefined 结果是
NaN
我们可以改进下,用户不输入实参,可以给 形参默认值 ,可以默认为 0, 这样程序更严谨,可以如下操作:
说明:这个默认值只会在缺少实参参数传递时 才会被执行,所以有参数会优先执行传递过来的实参, 否则默认为 undefined

函数返回值

有返回值函数的概念:
当调用某个函数,这个函数会返回一个结果出来
  这就是有 返回值 的函数
当然有些函数,则没有返回值

作用域

匿名函数

01

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读(二十六):Dual Attention Network for Scene Segmentation

文章目录 1.Introduction3.DANet3.1Position Attention Module3.2Channel Attention Module 论文&#xff1a;Dual Attention Network for Scene Segmentation   论文链接&#xff1a;Dual Attention Network for Scene Segmentation   代码链接&#xff1a;Github 1.Intr…

基于SSM+小程序民宿短租管理系统(民宿1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序民宿短租管理系统实现了管理员、用户及房主 1、管理员可以管理民宿信息和订单信息用户管理、房主管理、房间类型管理、预定管理等。 2、房主可以管理自己的民宿和订单 3、…

图论基础复习【并查集 | 图遍历 | 最小生成树 | 3种最小路径算法】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;高阶数据结构_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一&#xff0c;并…

JAVA Maven 的安装与配置

一、下载地址 官方网站&#xff1a;Maven – Download Apache Maven 我这里是3.8.6版本 二、安装步骤 maven安装之前要先安装jdk&#xff0c;请确保你的系统已经安装了jdk环境。 1.将下载好的 Maven 进行解压 apache-maven-3.6.8-bin.zip 2.配置本地仓库:修改 conf/settin…

C++设计模式创建型模式———单例模式

文章目录 一、引言二、懒汉模式三、饿汉模式四、C11 的线程安全单例五、与其他模式的关系六、总结 一、引言 单例模式是一种创建型设计模式&#xff0c; 让你能够保证一个类只有一个实例&#xff0c; 并提供一个访问该实例的全局节点。 在一个项目中&#xff0c;全局范围内&a…

HTML+CSS实现超酷超炫的3D立方体相册

效果演示 HTML和CSS实现一个简单的3D立方体加载动画的相册。它使用了HTML来构建立方体的结构&#xff0c;并通过CSS来添加样式和动画效果。 HTML <div class"loader3d"><div class"cube"><div class"face"><img src&qu…

如何对pdf文件进行加密?pdf文件加密全攻略与深度解析(5个方法)

如何对pdf文件进行加密&#xff1f; 只见&#xff0c;在深夜的情报局里&#xff0c;特工小李将一份绝密PDF文件放在保险箱内&#xff0c;以为这样就天衣无缝了。 细细推敲&#xff0c;漏洞百出&#xff1a; 如果钥匙被盗呢&#xff1f;如果被神匠破解出密码呢&#xff1f;如果…

java 提示 避免用Apache Beanutils进行属性的copy。

避免用Apache Beanutils进行属性的copy。 Inspection info: 避免用Apache Beanutils进行属性的copy。 说明&#xff1a;Apache BeanUtils性能较差&#xff0c;可以使用其他方案比如Spring BeanUtils, Cglib BeanCopier。 TestObject a new TestObject(); TestObject b new Te…

linux指令笔记

bash命令行讲解 lyt &#xff1a;是用户名 iZbp1i65rwtrfbmjetete2b2Z :这个是主机名 ~ &#xff1a;这个是当前目录 $ &#xff1a;这个是命令行提示符 每个指令都有不同的功能&#xff0c;大部分指令都可以带上选项来实现不同的效果。 一般指令和选项的格式&#xff1a;…

【openEuler/Centos】yum安装软件报Error: GPG check FAILED【分析根因弄明白,亲测有效不浪费时间】

yum安装软件报Error: GPG check FAILED 环境信息&#xff1a;cat /etc/openEuler-release openEuler release 22.03 (LTS-SP1) 报错信息 The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executin…

当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理

目录 1. API网关在微服务中的角色与重要性 2. API网关瓶颈的评估 2.1 请求延迟分析 2.2 并发请求量监控 2.3 内存和CPU使用情况 2.4 限流和熔断机制评估 2.5 日志分析 3. API网关瓶颈的解决方案 3.1 缓存机制优化 3.2 负载均衡优化 3.3 异步处理与消息队列 3.4 限流…

记录如何在RK3588板子上跑通paddle的OCR模型

官网文档地址 rknn_zoo RKNPU2_SDK RKNN Model Zoo 一、PC电脑是Ubuntu22.04系统中完成环境搭建(板子是20.04&#xff09; 安装模型转换环境 ​conda create -n rknn2 python3.10 conda activate rknn2 安装Ubuntu依赖包 su…

STM32 第18章 SysTick--系统定时器

时间:2024.10.26-10.27 参考资料: 《零死角玩转STM32》“SysTick--系统定时器”章节 一、学习内容 1.SysTick简介 1.1 SysTick: 系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。 官方参考手册里的介绍: 系统嘀…

riscv uboot 启动流程分析 - SPL启动流程

分析uboot 启动流程硬件&#xff1a;启明智显推出M4核心板 &#xff08;https://gitee.com/qiming-zhixian/m4-openwrt&#xff09; 1.U-boot和SPL概述 U-Boot 分为 uboot-spl 和 uboot 两个组成部分。SPL 是 Secondary Program Loader 的简称&#xff0c;第二阶段程序加载器。…

重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估会员与促销管理系统的系统架构设计

案例 阅读以下关于软件架构设计与评估的叙述&#xff0c;回答问题1和问题2。 【题目】 某电子商务公司拟升级其会员与促销管理系统&#xff0c;向用户提供个性化服务&#xff0c;提高用户的粘性。在项目立项之初&#xff0c;公司领导层一致认为本次升级的主要目标是提升会员管…

简单的udp程序

文章目录 1. 预备知识1.1 源IP地址和目的IP地址1.2 端口号1.3 套接字初识1.4 tcp协议和udp协议简单认识1.5 网络字节序 2. udp程序2.1 创建套接字&#xff08;socket&#xff09;的系统调用2.2 bind()2.2.1 初始化一个sockaddr_in结构体2.2.2 inet_addr函数2.2.3 0.0.0.02.2.4 …

深入解析东芝TB62261FTG,步进电机驱动方案

TB62261FTG是一款由东芝推出的两相双极步进电机驱动器&#xff0c;采用了BiCD工艺&#xff0c;能够提供高效的电机控制。这款芯片具有多种优秀的功能&#xff0c;包括PWM斩波、内置电流调节、低导通电阻的MOSFET以及多种步进操作模式&#xff0c;使其非常适合用于需要精确运动控…

一步一步从微信小程序获取asp.net Core API的数据

前面我们说过&#xff0c;如何使用微信小程序获取asp.net的数据&#xff0c;这里我们继续介绍如何获取asp.net core api的数据。两者之间还是有一些差别的。本篇博文旨在详细介绍如何一步一步从微信小程序获取asp.net Core API的数据。 文章目录 一、建立并了解asp.net core we…

RabbitMQ集群搭建及使用

1. 概述 前提条件&#xff1a;linux服务器下已经安装好了docker服务。 本文档将搭建一个三台RabbitMQ的集群&#xff0c;包括三个RabbitMQ容器安装在同一服务器和三台不同的服务器。 2. 集群搭建 在一台服务器上创建三个RabbitMQ容器。 2.1.1. 创建容器 执行以下命令创建三…

合理利用IPIDEA代理IP,优化数据采集效率!

一、前言 在全球化与信息化交织的当代社会&#xff0c;数据已成为驱动商业智慧与技术革新的核心引擎。网络&#xff0c;作为信息汇聚与交流的枢纽&#xff0c;不仅是人们获取知识的窗口&#xff0c;更是商业活动与技术创新的广阔舞台。在这个信息繁荣的时代&#xff0c;Python…