HTML+JavaScript-01

说明

之前有一篇JavaWeb-JavaScript中只是简单介绍了一点JavaScript的内容,这篇笔记算是续写的,但是从01开始编号。

引入js文件

html、css、js俗称前端三剑客,一般都是分开写,先写框架、再写css、最后写js。因此在工程量大的情况下,一个页面可以分为三个文件(.html/.css/.js)。引入对应的js文件也就显得格外重要。因为JavaScript 是一门跨平台、面向对象的脚本语言,它能使网页可交互(例如拥有复杂的动画,可点击的按钮,通俗的菜单等)。

示例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 1、引入js文件 -->
    <script src="./js/00-javaScript.js"></script>
</head>

<body>
    <!-- 2、脚本块:把script标签写在body中,一般都在div下面 -->
    <script>

    </script>
</body>

</html>

.js文件中直接写函数即可

基本概念及用法

注释

Javascript 注释的语法和 C++ 或许多其他语言类似:

JSCopy to Clipboard

// 单行注释

/* 这是一个更长的,
   多行注释
*/

/* 然而,你不能,/* 嵌套注释 */ 语法错误 */

在代码执行过程中,注释将被自动跳过(不执行)。

声明

JavaScript 有三种声明方式。

  • var

    声明一个变量,可选初始化一个值。

  • let

    声明一个块作用域的局部变量,可选初始化一个值。

  • const

    声明一个块作用域的只读常量。

定义变量的注意事项

1、不能重复定义

2、名称不能使用关键字

3、由数字字母下划线组成

4、不能以数字开头

5、尽量采用驼峰命名法

​ 驼峰分为大驼峰和小驼峰

​ 大驼峰所有单词的首字母都大写 比如定义一个男学生的年龄 let StudentAgeBoy=10;

​ 小驼峰首个单词的首字母小写其余单词的首字母大写变量一般使用小驼峰 如 let studentAgeBoy=18;

基本数据类型

在JavaWeb-JavaScript这篇博客中有提到过,但是官网上有七种数据类型,这里在重新写一下(补充BigInt和Symbol)

JavaScript中分为:原始类型和引用类型

基本数据类型的主要特点是赋值方式是传值,并且值存在栈中

原始类型描述
Number数字(整数、小数、NaN(Not a Number))
String字符串,单双引号都可
Boolean布尔,true、false
null对象为空
undefined当声明的变量未初始化时,该变量的默认值是undefined
BigInt任意精度的整数,可以安全地存储大整数,甚至可超过安全整数的现在
Symbol代表,一种实例是唯一且不可改变的数据类型(防止命名冲突)
  • 注:使用typerof运算符可以获取数据类型

示例

案例-036

let a = true;
let b = 33;
let c = "hello world";
alert(typeof a);//boolean
alert(typeof b);//number
alert(typeof c);//string

引用数据类型

引用数据类型:object(对象,除了基本数据类型其他都是对象。数组是对象、函数是对象、正则表达式也是对象

引用数据类型的主要特点是赋值方式是传址,并且存在堆中。(因为引用数据类型的值的大小无法确定,要根据情况进行特定的配置)

代码

//创建一个对象
let obj1 = { key: 'value' };

//将obj1赋值给obj2,实际上是将引用传递给obj2
let obj2 = obj1;

obj1.key = "甲柒";
//由于obj1和obj2共享引用,所以obj2的值也会被修改
console.log(obj2.key);//甲柒

数据类型的转换

1、toString()方法转换

例如

let s = 998;//number
let a = s.toString();//将s转换为字符串类型并赋值给a

2、String(变量名)强制转换

例如

let b = 334;//number
let c = String(b);//强转为string

3、隐式转换(在js中,一个其他类型和字符串类型相加会获得一个新的字符串)

例如

let d = 521;//number
let f = d + "";//f为string类型

4、Number()强转

示例

案例-037

代码

let age = prompt("输入年龄");//默认输入的是字符串类型
let Age = Number(age);//将字符串类型强转为number类型
alert("age的数据类型是" + typeof age);//string
alert("Age的数据类型是" + typeof Age);//number

5、parseInt():向下取整

示例

案例-038

代码

let age = Number(prompt("输入年龄"));//输入小数22.33
let age1 = parseInt(age);//向下取整
alert("age的数据类型是" + typeof age);//number
alert("age向下取整后的值" + age1);//22

document

document.write:在浏览器页面进行打印

示例

image-20240119204408851

代码

document.write("甲柒~~");

console.log:控制台打印输出

示例

image-20240119204533939

代码

console.log("javaScript~~~");

prompt:在弹框中输入

示例

案例-035

代码

prompt("请输入你的姓名");
prompt("请输入你的年龄", 18);
prompt("请输入你的姓名", "甲柒");
prompt("", "JavaScript!!!");

案例-1-成绩判断

示例

案例-039

代码

let score = Number(prompt("成绩"));
switch (score != null) {
    case (score>=90):
    alert("优秀");
        break;
    case (score>=80):
    alert("良好");
        break;
    case (score>=60):
    alert("中");
        break;
    case (score<60):
    alert("差");
        break;
    default:
        break;
}

案例-2-判断闰年

闰年:四年一闰百年不闰,四百年一闰。

示例

案例-040

代码

// 弹窗输入年份
var year = prompt("请输入年份:");

// 判断是否是闰年的函数
function isLeapYear(year) {
    // 闰年的条件:
    // 1. 能被4整除,但不能被100整除
    // 2. 能被400整除
    return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
}

// 判断并弹出结果
if (isLeapYear(parseInt(year))) {
    alert(year + "年是闰年!");
} else {
    alert(year + "年不是闰年!");
}

案例-3-判断某年某月的天数

1、3、5、7、8、10、12:31天

4、6、9、11:30天

2:分为闰年、平年

示例

案例-041

代码

var year = prompt("请输入年份:");
var month = prompt("请输入月份:");

switch (month != null && year != null) {
    case (month == 1):
    case (month == 3):
    case (month == 5):
    case (month == 7):
    case (month == 8):
    case (month == 10):
    case (month == 12):
        alert(year + "年" + month + "月有 " + "31" + " 天。");
        break;
    case (month == 4):
    case (month == 6):
    case (month == 9):
    case (month == 11):
        alert(year + "年" + month + "月有 " + "30" + " 天。");
        break;
    case (month == 2):
        if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {
            alert(year + "年" + month + "月有 " + "29" + " 天。");
        } else {
            alert(year + "年" + month + "月有 " + "28" + " 天。");
        }
        break;
    default:
        break;
}

案例-4-能否被3、5、7整除

注意顺序:先判断同时满足三种情况,然后判断同时满足两种情况,最后判断满足一种情况

示例

案例-042

代码

let num = prompt("请输入一个数");
switch (num != null) {
    case num % 3 == 0 && num % 5 == 0 && num % 7 == 0:
        alert(num + "可以被3、5、7整除");
        break;
    case num % 3 == 0 && num % 5 == 0:
        alert(num + "可以被3和5整除");
        break;
    case num % 3 == 0 && num % 7 == 0:
        alert(num + "可以被3和7整除");
        break;
    case num % 5 == 0 && num % 7 == 0:
        alert(num + "可以被5和7整除");
        break;
    case num % 3 == 0:
        alert(num + "可以被3整除");
        break;
    case num % 5 == 0:
        alert(num + "可以被5整除");
        break;
    case num % 7 == 0:
        alert(num + "可以被7整除");
        break;
}

从一个数组中获取随机值

使用Math.random()

示例

案例-043

先声明一个数组

const array = ['a', 'b', 'c', 'd', 'e'];

使用Math.random()函数对数组的下标进行随机取值,注意要对随机值进行取整处理,可以使用parseInt()或者Math.floor()

Math.random()生成0到1之间的随机数,并与数组长度相乘,数字总是在0到数组长度之间返回,这被称为随机指数。Math.floor(),对于浮动的下限值返回整数。

function randomNum() {
    const array = ['a', 'b', 'c', 'd', 'e'];
    let arrayIndex = parseInt(Math.random() * array.length);
    let arrayRandom = array[arrayIndex];
    alert(array+"中的随机数为:"+arrayRandom);
}
randomNum();

parseInt()Math.floor() 都是 JavaScript 中用于数值处理的函数,但它们的行为有所不同。

  1. parseInt() 函数用于将字符串转换为整数。如果字符串的开头是数字,parseInt() 将返回这个数字的整数形式。如果字符串的开头不是数字,parseInt() 将返回 NaN。例如:
parseInt('123abc'); // 返回 123
parseInt('abc123'); // 返回 NaN

此外,parseInt() 还接受第二个参数,表示要转换的数字的基数。例如:

parseInt('10', 2); // 返回 2 (二进制中10表示为1010)
  1. Math.floor() 函数用于将一个数值向下取整。也就是说,它会返回不大于给定数值的最大整数。例如:
Math.floor(4.7); // 返回 4
Math.floor(-4.7); // 返回 -5

注意,Math.floor() 只处理数值,如果你尝试将非数值传递给它,它可能会返回 NaN

在某些情况下,你可能会发现 Math.floor() 的行为类似于 parseInt(),尤其是当你处理的数字接近于整数时。然而,它们之间的主要区别在于如何处理非整数部分:Math.floor() 会完全忽略它们,而 parseInt() 则会简单地将其视为0。

参考文章:https://juejin.cn/post/7118593994212245518

Math对象

常用函数属性
random随机生成0-1的随机数[0, 1)
ceil向上取整
floor向下取整
max找最大值
min找最小值
pow幂运算
abs求绝对值
round四舍五入

注:随机生成一个n-m的整数Math.floor(Math.random() * (m - n + 1)) + n;

示例-1

案例-045

代码

let a = Math.random();//随机生成一个0-1的小数
console.log("a=" + a);//[0,1)

let a1 = Math.random() * 10;//随机生成一个0-10的小数
console.log("a1=" + a1);//[0,10) 小数

let a2 = Math.floor(11.9);//floor 向下取整
console.log("a2=" + a2);//11

let a3 = Math.floor(Math.random() * 11);//生成0-10的整数
console.log("a3=" + a3);//[0,10] 整数

let a4 = Math.floor(Math.random() * 6) + 5;//随机生成5-10的整数
console.log("a4=" + a4);//[5,10]

// 随机生成一个n-m的整数
// Math.floor(Math.random() * (m - n + 1)) + n;

// 随机生成一个10-30的整数
let a5 = Math.floor(Math.random() * (30 - 10 + 1)) + 10;
console.log("a5=" + a5);//[10,30]

let a6 = Math.ceil(13.09);//向上取整
console.log("a6=" + a6);//14

示例-2

image-20240120161304014

代码

let a7 = Math.max(1, -2, 3, 4, 5, 6, 99, 9, 45);
let a8 = Math.min(1, -2, 3, 4, 5, 6, 99, 9, 45);
console.log("a7=" + a7);//99
console.log("a8=" + a8);//-2

const arr = [33, 22, 55, 66, 77, -99];
let a9 = Math.max(...arr);//...展开运算符
console.log("a9=" + a9);//77

let a10 = Math.pow(2, 4)//求2的4次方
console.log("a10=" + a10);//16

let a11 = 2 ** 3;//2的3次方
console.log("a11=" + a11);//8

let a12 = Math.abs(-19);//求绝对值
console.log("a12=" + a12);//19

console.log(Math.round(3.14159));//四舍五入 3 

注:...为展开运算符

展开语法

展开语法 (Spread syntax), 可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。(译者注: 字面量一般指 [1, 2, 3] 或者 {name: "mdn"} 这种简洁的构造方式)

详情:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax#%E8%AF%AD%E6%B3%95

案例-5-生成验证码

示例

案例-044

代码

function captcha() {
    const characters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
        'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
        'w', 'x', 'y', 'z', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
    const newCode = [];
    for (let i = 0; i <= 3; i++) {
        let index = Math.floor(Math.random() * characters.length);
        newCode.push(characters[index]);
    }
    return newCode;
}
alert("本次验证码:" + captcha());

日期对象Date

常用方法

方法名作用取值范围
getFullYear()获取年份获取四位年份
getMonth()获取月份0-11
getDate()
getDay()获取星期0-6
getHours()获取小时0-23
getMinutes()获取分钟0-59
getSeconds()获取秒0-59

示例

image-20240120164650068

代码

const date = new Date();//实例化对象

let year = date.getFullYear();
console.log(year + "年");//年
console.log(date.getMonth() + 1 + "月");//月
console.log(date.getDate() + "日");//日
console.log("星期" + date.getDay());//星期
console.log(date.getHours() + "时");//时
console.log(date.getMinutes() + "分");//分
console.log(date.getSeconds() + "秒");//秒

格式化日期对象

自定义函数格式化时间

示例

image-20240120165238574

代码

function getDate() {
    //创建时间对象
    const date = new Date();
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    let date1 = date.getDate();
    let hours = date.getHours();
    hours = hours < 10 ? "0" + hours : hours
    let minute = date.getMinutes();
    minute = minute < 10 ? "0" + minute : minute;
    let second = date.getSeconds();
    second = second < 10 ? "0" + second : second;

    return year + "年" + month + "月" + date1 + "日" + "  " + hours + ":" + minute + ":" + second
}
console.log(getDate());

使用封装过的方法

方法名格式
toLocaleString()2022/4/1 09:33:34
toLocaleDateString()2022/4/1
toLocaleTimeString()10:09:31

示例

image-20240120170145431

代码

const date = new Date();//实例化对象
console.log(date.toLocaleString());//2024/1/20 17:00:42
console.log(date.toLocaleDateString());//2024/1/20
console.log(date.toLocaleTimeString());//17:00:42

时间戳

时间戳:是指1970年01月01日00时00分00秒到现在的毫秒数

获取时间戳

示例

image-20240120171013947

方法一

const date = new Date();
console.log(date.getTime());

方法二

console.log(+new Date());

方法三

console.log(Date.now());

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

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

相关文章

HarmonyOS—配置开发环境

应用/服务支持API Version 4至9&#xff0c;首次使用DevEco Studio&#xff0c;工具的配置向导会引导您下载SDK及工具链。配置向导默认下载 API Version 9的SDK及工具链&#xff0c;如需下载API Version 4至8&#xff0c;可在工程配置完成后&#xff0c;进入HarmonyOS SDK界面手…

福建专业建筑清水模板 — 安全可靠的选择

在福建地区的建筑工程中&#xff0c;选择高质量的清水模板对于确保结构的美观和工程的安全至关重要。我们能强优品木业提供的专业建筑清水模板&#xff0c;以其卓越的质量和安全性&#xff0c;成为施工团队的首选。 产品特性 优质材料制作&#xff1a;选用高品质木材制作&…

机械设计-哈工大课程学习-螺纹连接

圆柱螺纹主要几何参数螺纹参数 ①外径&#xff08;大径&#xff09;&#xff0c;与外螺纹牙顶或内螺纹牙底相重合的假想圆柱体直径。螺纹的公称直径即大径。 ②内径&#xff08;小径&#xff09;&#xff0c;与外螺纹牙底或内螺纹牙顶相重合的假想圆柱体直径。 ③中径&#xff…

React 初次接触

背景 还是为了完善高大上的在线文档系统&#xff0c;虽然比着葫芦画瓢的修改了一些所谓的代码&#xff0c;慢慢的才发现&#xff0c;原来这就是传说中的React&#xff0c;所以有比较又要囫囵吞枣一下React。 基本原理 参照《React技术揭秘》 网上有电子版 &#xff0c;应该是…

selenium-java中切换iframe

1、当iframe中有固定的name或者id时可以通过name和id进行切换,代码如下 driver.switchTo().frame("name"); 2、当iframe中没有固定的name或者id时可以通过iframe角标进行切换&#xff0c;在浏览器通过ctrlf快捷键&#xff0c;搜索标签框输入//iframe;来查看当前ifr…

11、Kafka ------ Kafka 核心API 及 生产者API 讲解

目录 Kafka核心API 及 生产者API讲解★ Kafka的核心APIKafka包含如下5类核心API&#xff1a; ★ 生产者APIKafka 的API 文档 ★ 使用生产者API发送消息 Kafka核心API 及 生产者API讲解 官方文档 ★ Kafka的核心API Kafka包含如下5类核心API&#xff1a; Producer API&#x…

一维数组2和二维数组1

1.一维数组在内存中的储存 在前面创建的数组中&#xff0c;每个元素是怎么储存的呢&#xff1f;我们通过观察元素的地址来看看吧。 %p是用来打印地址的。 结果为&#xff1a; 由此可看出每个地址都相隔一个int类型的距离&#xff0c;可以看出数组在内存中是连续存放的。也就是…

Pytest 测试框架与Allure 测试报告——Allure2测试报告-L1

目录&#xff1a; allure2安装 Allure2介绍Allure2报告展示Allure2报告展示-首页概览Allure2报告展示-用例详情页Allure2安装Allure2下载与安装Allure环境验证插件安装-Python插件安装-Java验证插件安装-Javaallure2运行方式 生成测试报告流程使用Allure2运行方式-Python使用A…

Android逆向之指令集和CPU架构

文章目录 前言引子 指令集复杂指令集&#xff08;CISC&#xff09;精简指令集&#xff08;RISC&#xff09;RISC-VARM和x86的区别指令集和汇编汇编语言是用人类看得懂的语言来描述指令集不同指令集对应不同的汇编语言 ARM和x86指令集差异ARM指令集x86指令集 CPU架构和ABI什么是…

YARN节点故障的容错方案

YARN节点故障的容错方案 1. RM高可用1.1 选主和HA切换逻辑 2. NM高可用2.1 感知NM节点异常2.2 异常NM上的任务处理 4. 疑问和思考4,1 RM感知NM异常需要10min&#xff0c;对于app来说是否太长了&#xff1f; 5. 参考文档 本文主要探讨yarn集群的高可用容错方案和容错能力的探讨。…

HCIP之BGP联邦实验

华子目录 实验拓扑及要求规划网段和IP地址实验步骤配置IP地址先让IGP通建BGP邻居修改ospf下环回接口网络类型修改联邦之间的最大跳数每台运行BGP的路由器批量宣告路由修改本地下一跳测试 实验拓扑及要求 规划网段和IP地址 实验步骤 配置IP地址 r1配置&#xff0c;依次类推 […

软件需求规格说明书-word

软件需求规格说明书编写规范 1.项目背景 2.项目目标 3.系统架构 4.总体流程 5.名称解释 6.功能模块 软件开发全文档获取&#xff1a;软件项目开发全套文档下载_软件项目文档-CSDN博客

【Linux学习】进程信号

目录 十七.进程信号 导言 17.1 linux中的信号列表 17.2 标准信号与实时信号 17.3 信号的产生 17.3.1 通过终端按键产生信号 17.3.2 调用系统函数产生信号 17.3.3 软件条件产生信号 17.3.4 硬件异常产生信号 17.3.5 【补充】核心转储 Core Dump 17.4 信号的阻塞 17.4.1 信号相关…

Hive-SQL语法大全

Hive SQL 语法大全 基于语法描述说明 CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION] path; SELECT expr, ... FROM tbl ORDER BY col_name [ASC | DESC] (A | B | C)如上语法&#xff0c;在语法描述中出现&#xff1a; []&#xff0c;表示可选&#xff0c;如上[LOCATI…

vue3-模版引用

模版引用 ref 属性 场景&#xff1a;需要直接访问底层 DOM 元素。 方法&#xff1a;使用特殊的 ref 属性。 <input ref"input">ref 属性 允许我们在一个特定的 DOM 元素或子组件实例被挂载后&#xff0c;获得对它的直接引用。 访问模板引用 小 Demo: 当 i…

游戏渲染管道

高级的渲染步骤是由管道&#xff08;软件架构&#xff09;实现&#xff0c;各个阶段会操作输入流中的数据项&#xff0c;并对输出流产生数据。 管道每个阶段独立于其他阶段&#xff0c;所以管道的最大有点在于非常适合并行化。 渲染管道分为3个概要阶段。但在这里多讲几个阶段…

【大数据分析与挖掘技术】Mahout聚类算法

目录 一、聚类的基本概念 二、常见的Mahout数据结构 &#xff08;一&#xff09;向量&#xff08;Vector&#xff09; &#xff08;二&#xff09;文本文档 三、聚类算法种类 &#xff08;一&#xff09;K-means &#xff08;二&#xff09;模糊K-means &#xff08;…

中国电子学会2022年6月份青少年软件编程Scratch图形化等级考试试卷一级真题

一、单选题(共25题&#xff0c;共50分) 1.广场中有声控喷泉&#xff0c;当声音的音量大于60的时候&#xff0c;喷泉就会喷出水&#xff0c;现在的音量为30&#xff0c;下列哪个选项可以让喷泉喷出水&#xff1f;&#xff08;2分&#xff09; A. B. C. D. 答案解析&#x…

搭建开源数据库中间件MyCat2-配置mysql数据库双主双从

mycat2官网&#xff1a;MyCat2 前言&#xff1a;mycat2下载地址无法访问&#xff0c;不知道是不是被DNS污染了&#xff0c;还是需要搭梯子访问&#xff0c;所以我只能找到1.21的版本进行安装。搭建mycat2的前提是搭建数据库主从复制。 架构&#xff1a;双主双从 配置&#xf…

基于OpenSSL的SSL/TLS加密套件全解析

概述 SSL/TLS握手时&#xff0c;客户端与服务端协商加密套件是很重要的一个步骤&#xff0c;协商出加密套件后才能继续完成后续的握手和加密通信。而现在SSL/TLS协议通信的实现&#xff0c;基本都是通过OpenSSL开源库&#xff0c;本文章就主要介绍下加密套件的含义以及如何在O…