JavaScript 流程控制与数组实战闯关

JavaScript 流程控制与数组实战闯关

运算符

JavaScript 中的运算符和 Java 用法基本相同,此处不做详细介绍了。

算术运算符
  • +
  • -
  • *
  • /
  • %
赋值运算符 & 复合赋值运算符
  • =
  • +=
  • -=
  • *=
  • /=
  • %=
自增自减运算符
  • ++: 自增 1
  • --: 自减 1
比较运算符
  • <
  • >
  • <=
  • >=
  • ==:比较相等(会进行隐式类型转换)
  • !=
  • ===:比较相等(不会进行隐式类型转换)
  • !==

逻辑运算符

用于计算多个 boolean 表达式的值。

  • &&:与(一假则假)
  • ||:或(一真则真)
  • !:非

位运算

  • &:按位与
  • |:按位或
  • ~:按位取反
  • ^:按位异或

移位运算

  • <<:左移
  • >>:有符号右移(算术右移)
  • >>>:无符号右移(逻辑右移)

条件语句

if 语句

基本语法格式条件表达式为 true,则执行 if 的{}中的代码

// 形式1 if (条件) { 语句 } // 形式2 if (条件1) { 语句1 } else { 语句2 } // 形式3 if (条件1) { 语句1 } else if (条件2) { 语句2 } else if ...... { 语句... } else { 语句N } 

练习案例

  • 代码示例 1: 判定一个数字是奇数还是偶数
var num = 10; if (num % 2 == 0) { console.log("num 是偶数"); } else { console.log("num 是奇数"); } 

注意!不能写成num % 2 == 1就是奇数,负的奇数 %2 结果可能是 - 1。

  • 代码示例 2: 判定一个数字是正数还是负数
var num = 10; if (num > 0) { console.log("num 是正数"); } else if (num < 0) { console.log("num 是负数"); } else { console.log("num 是 0"); } 
  • 代码示例 3: 判定某一年份是否是闰年
var year = 2000; if (year % 100 == 0) { // 判定世纪闰年 if (year % 400 == 0) { console.log("是闰年"); } else { console.log("不是闰年"); } } else { // 普通闰年 if (year % 4 == 0) { console.log("是闰年"); } else { console.log("不是闰年"); } } 
三元表达式

if else的简写写法。

条件 ? 表达式1 : 表达式2 

条件为真,返回表达式 1 的值;条件为假,返回表达式 2 的值。注意,三元表达式的优先级是比较低的。

switch

更适合多分支的场景。

switch (表达式) { case 值1: 语句1; break; case 值2: 语句2; break; default: 语句N; } 

用户输入一个整数,提示今天是星期几

var day = prompt("请输入今天星期几:"); switch (parseInt(day)) { case 1: console.log("星期一"); break; case 2: console.log("星期二"); break; case 3: console.log("星期三"); break; case 4: console.log("星期四"); break; case 5: console.log("星期五"); break; case 6: console.log("星期六"); break; case 7: console.log("星期日"); break; default: console.log("输入有误"); } 

循环语句

重复执行某些语句

while 循环
while (条件) { 循环体; } 

执行过程:

  • 先执行条件语句
  • 条件为 true,执行循环体代码
  • 条件为 false,直接结束循环

代码示例 1: 打印 1-10

var num = 1; while (num <= 10) { console.log(num); num++; } 

代码示例 2: 计算 5 的阶乘

var result = 1; var i = 1; while (i <= 5) { result *= i; i++; } console.log(result) 
continue

结束这次循环(比如:吃五个李子,发现第三个李子有虫子,扔掉这个,继续吃下一个)

var i = 1; while (i <= 5) { if (i == 3) { i++; continue; } console.log("我在吃第" + i + "个李子"); i++; } 

输出结果:

我在吃第1个李子 我在吃第2个李子 我在吃第4个李子 我在吃第5个李子 

代码示例:找到 100-200 中所有 3 的倍数

var num = 100; while (num <= 200) { if (num % 3 == 0) { num++; // 这里的++不要忘记!否则会死循环 continue; } console.log("找到了3的倍数,为:" + num); num++; } 
break

结束整个循环(比如:吃五个李子,发现第三个有虫子,剩下的也不吃了)

var i = 1; while (i <= 5) { if (i == 3) { break; } console.log("我在吃第" + i + "个李子"); i++; } 

输出结果

我在吃第1个李子 我在吃第2个李子 

代码示例:找到 100-200 中第一个 3 的倍数

执行结果:

找到了3的倍数,为:102 
for 循环
for (表达式1; 表达式2; 表达式3) { 循环体 } 
  • 表达式 1: 用于初始化循环变量
  • 表达式 2: 循环条件
  • 表达式 3: 更新循环变量

执行过程:

  1. 先执行表达式 1,初始化循环变量
  2. 再执行表达式 2,判定循环条件
  3. 如果条件为 false,结束循环
  4. 如果条件为 true,则执行循环体代码
  5. 执行表达式 3,更新循环变量

代码示例:计算 5 的阶乘

var result = 0; for (var i = 1; i <= 5; i++) { result *= i; } console.log("result = " + result);

数组

创建数组
  • 使用 new 关键字创建
// Array的A要大写 var arr = new Array(); 
  • 使用字面量方式创建(常用)
var arr = []; var arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为“元素” 

注意: JS 的数组不要求元素是相同类型。这一点和 C、C++、Java 等静态类型语言差别很大,但是 Python、PHP 等动态类型语言也是如此。

获取数组元素

使用下标的方式访问数组元素(从 0 开始)

var arr = ["小狐佩奇", "小猪乔治", "小羊苏西"]; console.log(arr); console.log(arr[0]); console.log(arr[1]); console.log(arr[2]); arr[2] = "小狐凯迪"; console.log(arr); 

如果下标超出范围读取元素,则结果为 undefined:

console.log(arr[3]); // undefined console.log(arr[-1]); // undefined 

注意:不要给数组名直接赋值,此时数组中的所有元素都没了。(相当于本来 arr 是一个数组,重新赋值后变成字符串了)

var arr = ["小狐佩奇", "小猪乔治", "小羊苏西"]; arr = "小狐凯迪"; 
新增数组元素
  1. 通过修改 length 新增相当于在末尾新增元素,新增的元素默认值为 undefined
var arr = [9, 5, 2, 7]; arr.length = 6; console.log(arr); console.log(arr[4], arr[5]); 

输出结果:

(6) [9, 5, 2, 7, empty × 2] undefined undefined 
  1. 通过下标新增如果下标超出范围赋值元素,则会给指定位置插入新元素
var arr = []; arr[2] = 10; console.log(arr) 

此时这个数组的 [0] 和 [1] 都是 undefined,输出结果:

Array(3) 2: 10 length: 3 __proto__: Array(0) 
  1. 使用 push 进行追加元素代码示例:给定一个数组,把数组中的奇数放到一个 newArr 中
var arr = [9, 5, 2, 7, 3, 6, 8]; var newArr = []; for (var i = 0; i < arr.length; i++) { if (arr[i] % 2 != 0) { newArr.push(arr[i]); } } console.log(newArr);
删除数组中的元素

使用 splice 方法删除元素

var arr = [9, 5, 2, 7]; // 第一个参数表示从下标为 2 的位置开始删除,第二个参数表示要删除的元素个数是 1 个 arr.splice(2, 1); console.log(arr); // 结果 [9, 5, 7] 

目前咱们已经用到了数组中的一些属性和方法:

  • arr.length: length 使用的时候不带括号,此时 length 就是一个普通的变量(称为成员变量,也叫属性)
  • arr.push()arr.splice(): 使用的时候带括号,并且可以传参数,此时是一个函数(也叫做方法)

Read more

【Java Web学习 | 第四篇】CSS(3) -背景

【Java Web学习 | 第四篇】CSS(3) -背景

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * CSS背景样式全解析🥝 * 4.1 背景颜色 (`background-color`) * 4.2 背景图片 (`background-image`) * 4.3 背景平铺 (`background-repeat`) * 4.4 背景图片位置 (`background-position`) * 4.5 背景图像固定 (`background-attachment`) * 4.6 背景属性复合写法 * 4.7 背景色半透明 (`rgba`) * 综合代码演示 * 学习资源推荐🐦‍🔥 CSS背景样式全解析🥝 在网页设计中,背景样式是塑造页面视觉效果的关键元素之一。通过CSS的背景属性,我们可以为页面添加丰富的视觉效果,包括背景颜色、背景图片、平铺方式、定位以及固定等。

By Ne0inhk
C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战

C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 自动化测试基础:先搞懂"为什么"和"做什么" * 1.1 自动化测试的核心目标:回归测试 * 1.2 自动化测试分类:别把 “不同自动化” 混为一谈 * 1.3 自动化测试金字塔:如何分配测试资源? * 二. Web 自动化测试核心:环境搭建与驱动管理 * 2.1 核心组件原理:三者如何协同工作? * 2.2 环境搭建:3 步搞定依赖安装

By Ne0inhk
一位过来人的 Web 前端开发全维准备指南

一位过来人的 Web 前端开发全维准备指南

真正拉开开发者差距的,不是敲下第一行代码的速度,而是动笔之前思维框架的深度。 在这个数字化渗透进每个角落的时代,Web 前端开发早已不是当年那个“切图仔”的简单活儿。它是连接用户与数字世界的桥梁,是产品体验的灵魂载体,更是一门融合了艺术感性与工程理性的复杂学科。当无数零基础的学习者怀揣着改变职业轨迹的梦想,准备敲下人生第一个 <html> 标签时,我想邀请你们稍作停留。 本文不急于教你如何写代码,而是希望与你深入探讨:在真正踏上这条充满魅力与挑战的道路之前,我们需要在思维、心态、知识和工具上做哪些准备,才能让这段旅程走得更稳、更远、更具成长性。 一、思维重构:像工程师一样思考 学习前端的第一步,不是下载编辑器,而是启动大脑的“编程思维”模式。这是一种将现实世界的复杂问题,转化为计算机能够理解和执行的逻辑化、结构化思考方式。 抽象能力:从具象到通用 当你面对一个精美的网页时,编程思维会让你下意识地拆解它:这个导航栏可以抽象成一个包含 Logo 和菜单项的组件;这个商品卡片,可以提炼为一个可复用的模板,由图片、标题、价格三个数据槽位构成。

By Ne0inhk
Flutter 三方库 tflite_web 端云协同 AI 引擎鸿蒙化高配适配:搭建异构计算 WebGL 后台管线并强力驱动 TensorFlow Lite-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 tflite_web 端云协同 AI 引擎鸿蒙化高配适配:搭建异构计算 WebGL 后台管线并强力驱动 TensorFlow Lite-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 tflite_web 端云协同 AI 引擎鸿蒙化高配适配:搭建异构计算 WebGL 后台管线并强力驱动 TensorFlow Lite 轻量大模型推理内核运转 前言 在 OpenHarmony 构建混合架构(Hybrid App)的过程中,将 AI 能力直接下沉到客户端侧执行已成为主流趋势。虽然鸿蒙原生提供了强大的 AI 框架,但对于已有大量积累、且运行在 Flutter Web 容器中的应用而言,寻找一致性的端侧 AI 推理方案至关重要。tflite_web 库为基于 Flutter Web 的应用提供了调用 TensorFlow Lite 模型的能力。本文将调研其在鸿蒙 Web

By Ne0inhk