从零开始学习JavaScript:轻松掌握编程语言的核心技能④

news2024/11/28 18:55:04

从零开始学习JavaScript:轻松掌握编程语言的核心技能④

  • 1. JavaScript 表单
    • 1.1 JavaScript 表单验证
  • 2. JavaScript 保留关键字
  • 3. JavaScript this 关键字
  • 4. JavaScript let 和 const
    • 4.1 let
    • 4.2 const
  • 5.JavaScript JSON
  • 6.JavaScript 异步编程
  • 7.JavaScript 代码规范

🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主
🎁🎁:Web全栈开发专栏:《Web全栈开发》免费专栏,欢迎阅读!



在这里插入图片描述

1. JavaScript 表单

1.1 JavaScript 表单验证

📌JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。

表单数据经常需要使用 JavaScript 来验证其正确性:

  • 验证表单数据是否为空?
  • 验证输入是否是一个正确的email地址?
  • 验证日期是否输入正确?
  • 验证表单输入内容是否为数字型?

📌以下是一个简单的示例,演示如何验证表单中的文本输入字段:

<form>
  <label for="name">姓名:</label>
  <input type="text" id="name" name="name"><br><br>
  <label for="email">电子邮件地址:</label>
  <input type="email" id="email" name="email"><br><br>
  <label for="password">密码:</label>
  <input type="password" id="password" name="password"><br><br>
  <input type="submit" value="提交">
</form>

<script>
  const form = document.querySelector('form');
  const nameInput = document.querySelector('#name');
  const emailInput = document.querySelector('#email');
  const passwordInput = document.querySelector('#password');

  form.addEventListener('submit', (event) => {
    // 阻止表单默认提交行为
    event.preventDefault();

    // 检查姓名输入是否为空
    if (nameInput.value.trim() === '') {
      alert('请填写姓名');
      return;
    }

    // 检查电子邮件地址是否有效
    if (!isValidEmail(emailInput.value)) {
      alert('请输入有效的电子邮件地址');
      return;
    }

    // 检查密码是否至少包含一个数字和一个字母
    if (!isValidPassword(passwordInput.value)) {
      alert('密码必须至少包含一个数字和一个字母');
      return;
    }

    // 如果所有验证都通过,则提交表单
    form.submit();
  });

  // 检查电子邮件地址是否有效的函数
  function isValidEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return emailRegex.test(email);
  }

  // 检查密码是否至少包含一个数字和一个字母的函数
  function isValidPassword(password) {
    const passwordRegex = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/;
    return passwordRegex.test(password);
  }
</script>

运行结果:
在这里插入图片描述

在这个示例中,我们使用 addEventListener 方法为表单的 submit事件添加了一个监听器,当用户点击提交按钮时,我们将执行一些自定义验证逻辑。如果验证成功,我们将调用 form.submit()方法提交表单。否则,我们将使用 alert方法显示一个错误消息。同时我们使用了两个正则表达式来验证电子邮件地址和密码。正则表达式是一种强大的工具,可以用来匹配和搜索字符串。在这里,我们使用正则表达式来确保用户输入的电子邮件地址和密码符合特定的格式要求。

2. JavaScript 保留关键字

📌JavaScript 保留关键字是指被 JavaScript 语言保留用于特定用途的单词。这些单词不能用作标识符,如变量名、函数名等。
以下是 JavaScript 中的保留关键字:

await
break
case
catch
class
const
continue
debugger
default
delete
do
else
enum
export
extends
false
finally
for
function
if
implements
import
in
instanceof
interface
let
new
null
package
private
protected
public
return
static
super
switch
this
throw
true
try
typeof
var
void
while
with
yield

在编写 JavaScript 代码时,应避免使用这些保留关键字作为标识符,以免产生语法错误。

3. JavaScript this 关键字

📑 📑 在 JavaScript 中,this 关键字用于引用当前执行上下文中的对象。具体来说,this 引用的是调用当前函数的对象
📌当函数以对象的方法的形式调用时,this 引用该对象
例如:

const person = {
  name: 'Alice',
  sayHello() {
    console.log(`Hello, my name is ${this.name}.`);
  }
};

person.sayHello(); // 输出 "Hello, my name is Alice."

在上面的例子中,sayHello 方法是以 person 对象的方法的形式调用的,因此在方法内部,this 引用 person 对象。

📌当函数以普通函数的形式调用时,this 引用全局对象(在浏览器中是 window 对象,在 Node.js 中是 global 对象)。
例如:

function sayHello() {
  console.log(`Hello, my name is ${this.name}.`);
}

sayHello(); // 输出 "Hello, my name is undefined."

在上面的例子中,sayHello 函数是以普通函数的形式调用的,因此在函数内部,this 引用全局对象。由于全局对象没有 name属性,因此输出结果为 undefined。

📌可以使用 call、apply 和 bind 方法来显式地设置函数内部的 this。
例如:

const person1 = { name: 'Alice' };
const person2 = { name: 'Bob' };

function sayHello() {
  console.log(`Hello, my name is ${this.name}.`);
}

sayHello.call(person1); // 输出 "Hello, my name is Alice."
sayHello.call(person2); // 输出 "Hello, my name is Bob."

在上面的例子中,call 方法用于调用 sayHello 函数,并将 this 设置为 person1 或 person2对象。因此在函数内部,this 引用相应的对象。

4. JavaScript let 和 const

📑 📑 let 和 const 是 ES6 中新增的声明变量的关键字,它们与传统的 var 关键字有所不同。

4.1 let

📌let 关键字用于声明块级作用域的变量。块级作用域是指在代码块(如函数、循环、条件语句等)内部声明的变量只在该代码块内部可见,外部无法访问。
例如:

let x = 1;

if (true) {
  let x = 2;
  console.log(x); // 输出 2
}
console.log(x); // 输出 1

在上面的例子中,let x = 2 声明了一个块级作用域的变量,只在 if 语句块内部可见。外部的 x 变量仍为 1。

4.2 const

📌const 关键字用于声明块级作用域的常量。与 let 类似,const 声明的变量也是块级作用域的。
与 let 不同的是,const 声明的变量不能被重新赋值。一旦声明,其值就不能再改变。

例如:

const x = 1;

if (true) {
  const x = 2;
  console.log(x); // 输出 2
}
console.log(x); // 输出 1
// 以下代码会抛出 TypeError 错误
const y = 1;
y = 2;

在上面的例子中,const x = 2 声明了一个块级作用域的常量,只在 if 语句块内部可见。外部的 x 常量仍为 1。 尝试重新赋值常量 y 会抛出 TypeError 错误,因为常量不能被重新赋值。

5.JavaScript JSON

📑 📑 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于 JavaScript 语法的子集
📌JSON 的语法规则非常简单,它由以下三种基本类型组成:

  • 对象(Object)
  • 数组(Array)
  • 值(Value)

📌对象是一组键值对,键和值之间使用冒号分隔,键值对之间使用逗号分隔,对象使用花括号包裹。
例如:

const person = {
  name: 'Alice',
  age: 25,
  address: {
    city: 'Beijing',
    country: 'China'
  }
};

// 将对象转换为 JSON 字符串
const jsonStr = JSON.stringify(person);
console.log(jsonStr); // 输出 {"name":"Alice","age":25,"address":{"city":"Beijing","country":"China"}}

📌数组是一组有序的值,值之间使用逗号分隔,数组使用方括号包裹。
例如:

const fruits = ['apple', 'banana', 'orange'];

// 将数组转换为 JSON 字符串
const jsonStr = JSON.stringify(fruits);
console.log(jsonStr); // 输出 ["apple","banana","orange"]

📌值可以是字符串、数字、布尔值、null、对象或数组。
例如:

const data = {
  name: 'Alice',
  age: 25,
  married: false,
  hobbies: ['reading', 'running'],
  address: {
    city: 'Beijing',
    country: 'China'
  },
  job: null
};

// 将值转换为 JSON 字符串
const jsonStr = JSON.stringify(data);
console.log(jsonStr); // 输出 {"name":"JavaScript 

📌在JavaScript中,可以使用JSON对象来解析和生成JSON数据。
📑 📑 JSON对象提供了两个方法

  1. JSON.parse()用于解析JSON字符串,将其转换为JavaScript对象;
  2. JSON.stringify()用于将JavaScript对象转换为JSON字符串。

例如,以下是一个JSON字符串的示例:

{
  "name": "John Doe",
  "age": 30,
  "isMarried": true,
  "hobbies": ["reading", "music", "sports"],
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  }
}

📌可以使用JSON.parse()方法将其转换为JavaScript对象,
例如:

var jsonString = '{"name":"John Doe","age":30,"isMarried":true,"hobbies":["reading","music","sports"],"address":{"street":"123 Main St","city":"Anytown","state":"CA","zip":"12345"}}';
var jsonObj = JSON.parse(jsonString);

📌这样就可以使用JavaScript对象的方式访问JSON数据了,同样地可以使用JSON.stringify()方法将JavaScript对象转换为JSON字符串,
例如:

var jsonObj = {
  "name": "John Doe",
  "age": 30,
  "isMarried": true,
  "hobbies": ["reading", "music", "sports"],
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  }
};
var jsonString = JSON.stringify(jsonObj);

6.JavaScript 异步编程

📑 📑 JavaScript 是一种单线程语言,这意味着它一次只能执行一个任务。但是,JavaScript 中的异步编程模型允许我们在执行长时间运行的任务时不会阻塞主线程。
📌JavaScript 中常用的异步编程模型包括:

  • ·回调函数:回调函数是异步编程中最常用的模型之一。在这种模型中,我们将一个函数作为参数传递给另一个函数,并在异步操作完成后调用该函数。
  • Promise:Promise 是一种更现代的异步编程模型,它提供了一种更优雅的方式来处理异步操作。Promise
    对象表示一个异步操作的最终完成或失败,并且允许我们在异步操作完成后执行一些代码。
  • async/await:async/await 是一种基于 Promise 的异步编程模型。async/await使得异步代码看起来像同步代码,这使得代码更易于理解和维护。

无论使用哪种异步编程模型,都需要小心处理异步代码中的错误和异常。异步代码中的错误可能会导致程序崩溃或无法正常工作。因此,一定要确保正确地处理错误和异常。

7.JavaScript 代码规范

📑 📑 在 JavaScript 中,代码规范是非常重要的。它可以提高代码的可读性和可维护性,并减少代码错误和漏洞的风险
📌以下是一些常见的 JavaScript 代码规范:

  1. 使用驼峰命名法来命名变量、函数和对象属性。
  2. 使用 const 或 let 来声明变量,不要使用 var。
  3. 在代码块中使用花括号,即使代码块只有一行。
  4. 在函数名和括号之间留一个空格,例如 function test() { }。
  5. 在操作符周围留空格,例如 a + b。
  6. 在逗号后留一个空格,例如 var arr = [1, 2, 3]。
  7. 使用分号来结束语句。
  8. 避免使用全局变量,尽可能使用局部变量。
  9. 使用注释来解释代码的目的和功能。
  10. 尽可能使用模块化的代码结构,将相关的代码组织在一起。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.协同工作与发布

目录 1 开发流程 2 人员分配情况 3 不同角色的权限 4 添加项目成员和体验成员 4.1 项目成员 4.1.1 添加 4.1.2 删除与修改权限 4.2 体验成员 4.2.1 添加 4.2.2 删除 5 发布上线 5.1 上传代码 5.2 提交审核 5.3 发布 6 推广 7 查看后台数据 1 …

留学生乱用ChatGPT真的太致命!被认定学术不诚信直接被退学?

01.ChatGPT留学生神器&#xff1f;作业论文全靠它&#xff1f; 近期留学圈内最火热的话题&#xff0c;肯定是关于ChatGPT。 “这个python作业我写不来&#xff0c;让ChatGPT帮我直接生成code就好了。” “论文英文的写不来&#xff0c;ChatGPT直接生成一篇essay&#xff0c;…

Linux - 进阶 使用 LAMP 搭建私有云存储 ( Nextcloud 搭建)

我们用到的私有云存储 >>> nextcloud (非常出名的一款 私有云搭建的应用响应程序 &#xff09; 预备工作 &#xff1a; # 关闭 selinux 及 防火墙 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld # 搭建 LAMP 环境 L &…

上市公司污染排放数据(2007-2022)

随着绿色金融的发展、环境信息披露政策制度的相继出台以及公众环保意识的增强&#xff0c;上市公司环境信息披露引起了学者、机构以及社会公众的广泛关注。本数据收集整理上市公司污染排放数据。 1、数据来源&#xff1a;自主整理 2、时间跨度&#xff1a;2007-2022年 3、区域…

构筑算力时代的全光底座,华为带来了面向F5.5G演进的战略蓝图

1991年&#xff0c;科学家Mark Weiser发表了一片文章《The Computer for the 21st Century》&#xff0c;其中有一句名言&#xff1a; The most profound technologies are those that disappear.They weave themselves into the fabric of everyday life until they areindist…

Executor框架的结构

Executor框架的结构 Executor框架主要由3大部分组成如下。任务。包括被执行任务需要实现的接口&#xff1a;Runnable接口或Callable接口。任务的执行。包括任务执行机制的核心接口Executor&#xff0c;以及继承自Executor的ExecutorService接口。Executor框架有两个关键类实现…

Office Visio 2013安装

哈喽&#xff0c;大家好。今天一起学习的是Visio 2013的安装&#xff0c;这是一个绘制流程图的软件&#xff0c;用有效的绘图表达信息&#xff0c;比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件&#xff0c;便于IT和商务人员就复杂…

【软考系统规划与管理师笔记】第5篇 IT服务规划设计

目录 1概述 2 IT服务规划设计活动 2.1 规划设计的活动 2.2关键成功因素 3服务目录管理 3.1 设计服务目录的目的 3.2服务目录设计活动 3.3服务目录设计关键成功因素 4服务级别协议 5服务需求识别 5.1服务需求识别的目的 5.2服务需求识别的活动 5.3 评估服务的指标…

[MySQL从入门到精通]SQL语句

前言 本期主要的学习目标是SQl语句中的DDL和DML实现对数据库的操作和增删改功能&#xff0c;学习完本章节之后需要对SQL语句手到擒来。 1.SQL语句基本介绍 SQL&#xff08;Structured Query Language&#xff09;是一种用于管理关系型数据库的编程语言。它允许用户在数据库中存…

弄清楚Node.js的功能特性、运行时、组成和发展趋势分析以及与JavaScript的区别

目录 Node.js介绍 Node.js的作用和功能特性 Node.js应用场景 运行时是什么 Node.js的组成 1. V8引擎 2. 本地&#xff08;核心&#xff09;模块 3. 标准库 Node.js的发展趋势 总结 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;使JavaScript可以…

CAD配置绘图环境

绘图时拥有自己的设置是非常重要的 我们可以用不同的颜色区分线条、用特殊的注释格式使自己理解更方便 这些功能需要我们在绘图之前完成对设计环境的配置&#xff0c;主要体现在图层的设置上 首先新建一个窗口 在命令行输入LA 或者在菜单栏点击图层特性 就能打开图层特性管…

【一起啃书】《机器学习》第八章 集成学习

文章目录 第八章 集成学习8.1 个体与集成8.2 Boosting8.3 Bagging与随机森林8.4 结合策略8.5 多样性 第八章 集成学习 8.1 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务&#xff0c;有时也被称为多分类器系统、基于委员会的学习等&#xff0c;下面是集成学习的…

网格搜索:Python遍历网格中每个点

遍历网格中每个点 1. 问题描述2. Python实现2.1 网格参数初始化2.2 遍历赋值2.3 矩阵赋值1. 问题描述 最近需要实现一个对矩阵赋值并对矩阵表示的网格参数进行测试的任务,假设网格的长宽均为k,待搜索的两个参数是Pitch 和 Yaw,存在两个列表中。现在需要将网格上不同参数设置…

什么情形下应该使用BFF?带你了解BFF的优势,即服务于前端的后端

BFF简介 BFF是一种Web架构&#xff0c;全名为Backends For Frontends&#xff0c;即为服务于前端的后端。这个词来源于Sam Newman的一篇文章&#xff1a;Pattern: Backends For Frontends。BFF一般指的是在前端与后端之间加增加一个中间层。为什么要在前端和后端之间增加一个B…

Python潮流周刊#5:并发一百万个任务要用多少内存?

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里记录每周值得分享的 Python 及通用技术内容&#xff0c;部分为英文&#xff0c;已在小标题注明。&#xff08;标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff…

oc 安装 demo 版本

版本 demo 版本用于学习&#xff1b;推荐订阅版本&#xff0c;个人商用&#xff0c;3.0 以下有破解&#xff0c;4.0 据说没有破解版本企业版&#xff0c;企业商用版本。 demo 版本用于学习 demo 安装需要 下载地址 oc安装 官方文档 https://docs.otoy.com/cinema4d/Instal…

Java并发体系-第四阶段-AQS源码解读(有时间就了解一下)

可重入锁 /*** 可重入锁:* 1、可重复可递归调用的锁&#xff0c;在外层使用锁之后&#xff0c;在内层仍然可以使用&#xff0c;并且不发生死锁&#xff0c;这样的锁就叫做可重入锁。* 2、是指在同一个线程在外层方法获取锁的时候&#xff0c;再进入该线程的内层方法会自动获取锁…

【Java多线程进阶】死锁

前言 死锁&#xff08;Deadlock&#xff09;是指两个或多个线程在执行过程中&#xff0c;因争夺资源而造成的一种互相等待的现象&#xff0c;如果不提前预防或外界干扰&#xff0c;这些线程将无法执行下去。因此&#xff0c;本篇博文讲解造成死锁的原因以及解决方案。 目录 1.…

7.条件渲染

目录 1 wx:if 2 wx:elif 3 wx:else 4 block标签配合条件渲染 5 hidden 1 wx:if wx:if 与 v-if 的运行方式相同&#xff0c;都是 删除与创建元素(不是display:none) 2 wx:elif 3 wx:else 4 block标签配合条件渲染 我们现在有一个view套view的页面 现在我不想有外…