【学术论文投稿】JavaScript 前端开发:从入门到精通的奇幻之旅

【中文核刊&普刊投稿通道】2024年体育科技与运动表现分析国际学术会议(ICSTPA 2024)_艾思科蓝_学术一站式服务平台

更多学术会议论文投稿请看:https://ais.cn/u/nuyAF3 

目录

一、引言

二、JavaScript 基础

(一)变量与数据类型

(二)运算符

(三)控制结构

三、函数

(一)函数定义与调用

(二)函数作用域

(三)闭包

四、DOM 操作

(一)DOM 简介

(二)获取元素

(三)修改元素属性

(四)添加和删除元素

五、事件处理

(一)事件简介

(二)添加事件处理程序

(三)常见事件类型


 

一、引言

在当今的互联网世界中,前端开发扮演着至关重要的角色。而 JavaScript 无疑是前端开发领域的核心技术之一。它就像一把神奇的钥匙,打开了创建交互式网页的大门。无论是炫酷的动画效果、动态的数据更新,还是复杂的用户交互逻辑,JavaScript 都能轻松应对。从简单的网页表单验证到构建大型的单页面应用程序(SPA),JavaScript 的应用场景无处不在。在这篇博客中,我们将深入探讨 JavaScript 前端开发的各个方面,带领大家踏上从入门到精通的精彩旅程。

二、JavaScript 基础

(一)变量与数据类型

  1. 变量声明
    在 JavaScript 中,我们可以使用 varlet 和 const 来声明变量。var 是早期的变量声明方式,它存在变量提升的问题。例如:
    console.log(a); // 输出 undefined
    var a = 5;

    let 和 const 是 ES6 引入的新方式。let 声明的变量不存在变量提升,且不允许在相同作用域内重复声明。const 用于声明常量,一旦赋值就不能再修改。

    console.log(b); // 报错:b is not defined
    let b = 10;
    const c = 20;
    c = 30; // 报错:Assignment to constant variable.
  2. 数据类型
    JavaScript 有多种数据类型,包括基本数据类型和复杂数据类型。基本数据类型有:
    • Number:用于表示数字,包括整数和浮点数。例如:let num = 42; 或 let floatNum = 3.14;
    • String:用于表示文本。可以使用单引号或双引号来创建字符串。例如:let str = 'Hello, JavaScript!'; 或 let anotherStr = "This is also a string."
    • Boolean:只有两个值 true 和 false,用于表示逻辑值。例如:let isTrue = true;
    • Null:表示一个空值。例如:let emptyValue = null;
    • Undefined:当一个变量声明但未赋值时,其值为 undefined。例如:let undef; console.log(undef); // 输出 undefined
      复杂数据类型主要有:
    • Object:这是 JavaScript 中最复杂的数据类型。对象可以包含多个属性和方法。例如:
      let person = {
          name: 'John',
          age: 30,
          sayHello: function() {
              console.log('Hello!');
          }
      };
    • Array:用于存储一组有序的值。例如:let fruits = ['apple', 'banana', 'cherry'];

(二)运算符

  1. 算术运算符
    JavaScript 中的算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模(%)。需要注意的是,加法运算符在处理字符串时会进行字符串拼接。例如:
    let num1 = 5;
    let num2 = 3;
    console.log(num1 + num2); // 8
    let str1 = 'Hello, ';
    let str2 = 'world!';
    console.log(str1 + str2); // Hello, world!
  2. 比较运算符
    比较运算符用于比较两个值,返回一个布尔值。包括等于(==)、不等于(!=)、全等(===)、不全等(!==)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。全等运算符会比较值和数据类型,而等于运算符只比较值。例如:
    console.log(5 == '5'); // true
    console.log(5 === '5'); // false
  3. 逻辑运算符
    逻辑运算符包括与(&&)、或(||)和非(!)。&& 运算符当两个操作数都为真时返回真,|| 运算符当至少一个操作数为真时返回真,! 运算符用于取反。例如:
    let a = true;
    let b = false;
    console.log(a && b); // false
    console.log(a || b); // true
    console.log(!a); // false

(三)控制结构

  1. 条件语句(if - else)
    if - else 语句用于根据条件执行不同的代码块。例如:
    let score = 80;
    if (score >= 90) {
        console.log('优秀');
    } else if (score >= 80) {
        console.log('良好');
    } else if (score >= 60) {
        console.log('及格');
    } else {
        console.log('不及格');
    }
  2. 循环语句(for、while、do - while)
    • for 循环:常用于已知循环次数的情况。例如:
      for (let i = 0; i < 5; i++) {
          console.log(i);
      }

    • 循环语句(for、while、do - while)
      • for 循环:常用于已知循环次数的情况。例如:
        for (let i = 0; i < 5; i++) {
            console.log(i);
        }
      • while 循环:在条件为真时持续执行代码块。例如:
        let j = 0;
        while (j < 3) {
            console.log(j);
            j++;
        }
      • do - while 循环:与 while 循环类似,但会先执行一次代码块再检查条件。例如:
        let k = 0;
        do {
            console.log(k);
            k++;
        } while (k < 2);

三、函数

(一)函数定义与调用

函数是 JavaScript 中的重要组成部分,可以将一段可重复使用的代码封装起来。函数可以使用函数声明或函数表达式来定义。

  1. 函数声明
    function add(num1, num2) {
        return num1 + num2;
    }
    console.log(add(3, 5)); // 8
  2. 函数表达式
    let multiply = function(num1, num2) {
        return num1 * num2;
    };
    console.log(multiply(2, 4)); // 8

    函数可以有参数和返回值。参数是函数接收外部传入的值,返回值是函数执行后返回的结果。

(二)函数作用域

JavaScript 中的函数有自己的作用域。在函数内部定义的变量在函数外部是不可访问的,而在函数外部定义的变量在函数内部如果没有同名变量则可以访问。例如:

let globalVar = 10;
function testScope() {
    let localVar = 20;
    console.log(globalVar); // 10
}
testScope();
console.log(localVar); // 报错:localVar is not defined

(三)闭包

闭包是 JavaScript 中一个比较高级但非常重要的概念。它允许函数访问其定义时所在的词法作用域,即使在函数在其词法作用域之外被执行时。例如:

function outerFunction() {
    let count = 0;
    return function() {
        count++;
        console.log(count);
    };
}
let inner = outerFunction();
inner(); // 1
inner(); // 2

在这个例子中,inner 函数形成了一个闭包,它可以访问并修改 outerFunction 中定义的 count 变量。

四、DOM 操作

(一)DOM 简介

DOM(Document Object Model)是文档对象模型,它将 HTML 文档表示为一个树形结构。在 JavaScript 中,我们可以通过 DOM API 来操作 HTML 元素,如获取元素、修改元素属性、添加或删除元素等。

(二)获取元素

  1. 通过 ID 获取元素
    可以使用 document.getElementById 方法来获取具有特定 ID 的元素。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <div id="myDiv">这是一个 div 元素</div>
    
    <script>
        let myDiv = document.getElementById('myDiv');
        console.log(myDiv.innerHTML); // 这是一个 div 元素
    </script>
    </body>
    </html>
  2. 通过标签名获取元素
    使用 document.getElementsByTagName 方法可以获取指定标签名的所有元素。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <p>段落 1</p>
    <p>段落 2</p>
    
    <script>
        let paragraphs = document.getElementsByTagName('p');
        for (let i = 0; i < paragraphs.length; i++) {
            console.log(paragraphs[i].innerHTML);
        }
    </script>
    </body>
    </html>
  3. 通过类名获取元素
    document.getElementsByClassName 方法用于获取具有特定类名的所有元素。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <div class="myClass">类名为 myClass 的 div 1</div>
    <div class="myClass">类名为 myClass 的 div 2</div>
    
    <script>
        let myClassElements = document.getElementsByClassName('myClass');
        for (let i = 0; i < myClassElements.length; i++) {
            console.log(myClassElements[i].innerHTML);
        }
    </script>
    </body>
    </html>

(三)修改元素属性

可以通过 JavaScript 来修改元素的各种属性,如修改元素的样式、内容等。

  1. 修改样式
    可以直接修改元素的 style 属性来改变其样式。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <div id="myDiv" style="width: 100px; height: 100px; background-color: red;">原始 div</div>
    
    <script>
        let myDiv = document.getElementById('myDiv');
        myDiv.style.backgroundColor = 'blue';
        myDiv.style.width = '200px';
    </script>
    </body>
    </html>
  2. 修改内容
    可以使用 innerHTML 属性来修改元素的内容。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <div id="myDiv">原始内容</div>
    
    <script>
        let myDiv = document.getElementById('myDiv');
        myDiv.innerHTML = '新内容';
    </script>
    </body>
    </html>

(四)添加和删除元素

  1. 添加元素
    可以使用 document.createElement 创建新元素,然后使用 appendChild 方法将其添加到父元素中。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <div id="parentDiv"></div>
    
    <script>
        let parentDiv = document.getElementById('parentDiv');
        let newDiv = document.createElement('div');
        newDiv.innerHTML = '新创建的 div';
        parentDiv.appendChild(newDiv);
    </script>
    </body>
    </html>
  2. 删除元素
    可以使用 parentNode.removeChild 方法来删除一个元素。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <div id="parentDiv">
        <div id="childDiv">要删除的 div</div>
    </div>
    
    <script>
        let childDiv = document.getElementById('childDiv');
        let parentDiv = document.getElementById('parentDiv');
        parentDiv.removeChild(childDiv);
    </script>
    </body>
    </html>

五、事件处理

(一)事件简介

事件是用户与网页交互时产生的动作,如点击、鼠标移动、键盘按键等。JavaScript 可以通过事件处理程序来响应这些事件。

(二)添加事件处理程序

  1. 内联方式
    可以在 HTML 元素的属性中直接添加事件处理程序。例如:
    <button onclick="alert('你点击了按钮');">点击我</button>

    不过这种方式将 JavaScript 代码与 HTML 代码混合,不利于维护,一般不推荐使用。
    2. 脚本方式
    可以使用 JavaScript 在脚本中为元素添加事件处理程序。例如:

    <!DOCTYPE html>
    <html>
    <body>
    
    <button id="myButton">点击我</button>
    
    <script>
        let myButton = document.getElementById('myButton');
        myButton.addEventListener('click', function() {
            console.log('按钮被点击了');
        });
    </script>
    </body>
    </html>

    这里使用了 addEventListener 方法,它可以为元素添加多个相同类型的事件处理程序,并且可以更好地控制事件的传播。

(三)常见事件类型

  1. 鼠标事件
    常见的鼠标事件包括 click(点击)、mouseover(鼠标移到元素上)、mouseout(鼠标移出元素)等。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <div id="myDiv" style="width: 100px; height: 100px; background-color: red;">鼠标悬停测试</div>
    
    <script>
        let myDiv = document.getElementById('myDiv');
        myDiv.addEventListener('mouseover', function() {
            this.style.backgroundColor = 'blue';
        });
        myDiv.addEventListener('mouseout', function() {
            this.style.backgroundColor = 'red';
        });
    </script>
    </body>
    </html>
  2. 键盘事件
    键盘事件有 keydown(键盘按键按下)、keyup(键盘按键松开)等。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <input type="text" id="myInput">
    
    <script>
        let myInput = document.getElementById('myInput');
        myInput.addEventListener('keydown', function(event) {
            console.log('按下的键码:', event.keyCode);
        });
    </script>
    </body>
    </html>
  3. 表单事件
    对于表单元素,有 submit(表单提交)、change(表单元素值改变)等事件。例如:
    <!DOCTYPE html>
    <html>
    <body>
    
    <form id="myForm">
        <input type="text" id="myInput">
        <input type="submit" value="提交">
    </form>
    
    <script>
        let myForm = document.getElementById('myForm');
        myForm.addEventListener('submit', function(event) {
            event.preventDefault();
            console.log('表单提交');
        });
        let myInput = document.getElementById('myInput');
        myInput.addEventListener('change', function() {
            console.log('输入框内容改变');
        });
    </script>
    </body>
    </html>

    这里在表单的 submit 事件处理程序中使用了 event.preventDefault 方法来阻止表单的默认提交行为。

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

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

相关文章

【Golang】——Gin 框架与数据库集成详解

文章目录 1. 引言2. 初始化项目2.1 创建 Gin 项目2.2 安装依赖 3. 数据库驱动安装与配置3.1 配置数据库3.2 连接数据库3.3 在主函数中初始化数据库 4. 定义数据模型4.1 创建用户模型4.2 自动迁移 5. 使用 GORM 进行 CRUD 操作5.1 创建用户5.2 获取用户列表5.3 更新用户信息5.4 …

uniapp页面样式和布局和nvue教程详解

uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px&#xff0c;一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准&#xff0c;750rpx恰好为屏幕宽度。屏幕变宽&#xff0c;rpx 实际显示效果会等比放大…

用 Python 与 Turtle 创作属于你的“冰墩墩”!

用 Python 与 Turtle 创作属于你的“冰墩墩”&#xff01; &#x1f980; 前言 &#x1f980;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f980; 前言 &#x1f980; 冰墩墩是2022年北京冬季奥林匹克运动会的官方吉祥物。以熊猫为原型&#x…

用Python爬虫“偷窥”1688商品详情:一场数据的奇妙冒险

引言&#xff1a;数据的宝藏 在这个信息爆炸的时代&#xff0c;数据就像是一座座等待挖掘的宝藏。而对于我们这些电商界的探险家来说&#xff0c;1688上的商品详情就是那些闪闪发光的金子。今天&#xff0c;我们将化身为数据的海盗&#xff0c;用Python这把锋利的剑&#xff0…

力扣hot100-->二分查找

目录 二分查找 1. 33. 搜索旋转排序数组 2. 34. 在排序数组中查找元素的第一个和最后一个位置 3. 240. 搜索二维矩阵 II 3. 287. 寻找重复数 二分查找 1. 33. 搜索旋转排序数组 中等 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&am…

http自动发送请求工具(自动化测试http请求)

点击下载《http自动发送请求工具(自动化测试http请求)》 前言 在现代软件开发过程中&#xff0c;HTTP 请求的自动化测试是确保应用程序稳定性和可靠性的关键环节。为了满足这一需求&#xff0c;我开发了一款功能强大且易于使用的自动化 HTTP 请求发送工具。该工具基于 C# 开发…

蓝队技能-应急响应篇日志自动采集日志自动查看日志自动化分析Web安全内网攻防工具项目

知识点&#xff1a; 1、应急响应-系统日志收集-项目工具 2、应急响应-系统日志查看-项目工具 3、应急响应-日志自动分析-项目工具 演示案例-蓝队技能-工具项目-自动日志采集&自动日志查看&自动日志分析 系统日志自动采集-观星应急工具(Windows系统日志) SglabIr_Co…

Jenkins修改LOGO

重启看的LOGO和登录页面左上角的LOGO 进入LOGO存在的目录 [roottest-server01 svgs]# pwd /opt/jenkins_data/war/images/svgs [roottest-server01 svgs]# ll logo.svg -rw-r--r-- 1 jenkins jenkins 29819 Oct 21 10:58 logo.svg #jenkins_data目录是我挂载到了/opt目录&…

k8s-NetworkPolicy

NetworkPolicy 是k8s中的网络策略可以限制pod以及namespace之间的访问流量 演示一下名称空间之间基于端口的访问限制 官方对networkpolicy的介绍 官方网址&#xff1a; 网络策略 |Kubernetes &#xff08;简体中文&#xff09; 一&#xff1a;创建NetworkPolicy vim…

【算法一周目】滑动窗口(1)

目录 长度最小的子数组 解题思路 代码实现 无重复字符的最大字串 解题思路 代码实现 最大连续1的个数l l l 解题思路 代码实现 将x减到0的最小操作数 解题思路 代码实现 长度最小的子数组 题目链接&#xff1a;209. 长度最小的子数组题目描述&#xff1a; 给定一个…

Methode Electronics EDI 需求分析

Methode Electronics 是一家总部位于美国的全球性技术公司&#xff0c;专注于设计和制造用于多个行业的电子和电气组件&#xff0c;产品涵盖汽车、工业、电信、医疗设备以及消费电子等多个领域&#xff0c;提供创新的解决方案。 填写Methode_EDI_Parameters_Template Methode_…

【K8S系列】Kubernetes集群资源管理与调度 深度分析

在现代微服务架构中&#xff0c;Kubernetes&#xff08;K8s&#xff09;作为容器编排平台&#xff0c;提供了强大的资源管理和调度能力。然而&#xff0c;随着应用规模的扩大和复杂性增加&#xff0c;如何高效地管理和调度集群资源成为一个关键挑战。本文将深入探讨 Kubernetes…

HarmonyOS鸿蒙系统上File文件常用操作

HarmonyOS鸿蒙系统上&#xff0c;file文件常用操作记录 1.创建文件 createFile(fileName: string, content: string): string {// 获取应用文件路径let context getContext(this) as common.UIAbilityContext;let filesDirPath context.filesDir / fileName;// 新建并打开…

【SpringMVC - 1】基本介绍+快速入门+图文解析SpringMVC执行流程

目录 1.Spring MVC的基本介绍 2.大致分析SpringMVC工作流程 3.SpringMVC的快速入门 首先大家先自行配置一个Tomcat 文件的配置 配置 WEB-INF/web.xml 创建web/login.jsp 创建com.ygd.web.UserServlet控制类 创建src下的applicationContext.xml文件 重点的注意事项和说明…

DTH11传感器温度湿度+esp8266+阿里云+小程序

arduino在之前灯的基础上再添加两个库 Adafruit_Sensor&#xff0c;#include “DHT.h” 代码如下 #include <ESP8266WiFi.h> // 引入Arduino ESP8266核心库 #include <ArduinoJson.h> // 引入JSON处理库 #include <Ticker.h> // 引入定时库 #inclu…

【汇编语言】转移指令的原理(三) —— 汇编跳转指南:jcxz、loop与位移的深度解读

文章目录 前言1. jcxz 指令1.1 什么是jcxz指令1.2 如何操作 2. loop 指令2.1 什么是loop指令2.2 如何操作 3. 根据位移进行转移的意义3.1 为什么&#xff1f;3.2 举例说明 4. 编译器对转移位移超界的检测结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构…

mac安装appuim

要在macOS上安装Appium&#xff0c;这是一个自动化测试框架&#xff0c;可以用来对移动应用进行测试&#xff08;支持iOS和Android应用&#xff09;。为了安装Appium和其依赖的环境&#xff0c;你需要做一些准备工作。以下是详细的安装步骤&#xff1a; 前提条件 1、macOS系统…

【WSL+Kali】进行系统升级时在 Setting up libc6:amd64 (2.37-15) ... 卡住不动

问题描述 当尝试执行以下命令进行系统升级时&#xff1a; sudo apt upgrade升级进程在以下步骤中卡住不动&#xff1a; Setting up libc6:amd64 (2.37-15) ...重启系统后&#xff0c;该问题仍然存在&#xff0c;如下图所示&#xff1a; 原因分析 apt命令是一个用于处理包的…

DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能

DevOps的兴起&#xff0c;得益于敏捷软件开发的普及与IT基础设施代码化管理的革新。敏捷宣言虽已解决了研发流程中的诸多挑战&#xff0c;但代码开发仅是漫长价值链的一环&#xff0c;开发前后的诸多问题仍亟待解决。与此同时&#xff0c;虚拟化和云计算技术的飞跃&#xff0c;…

微深节能 平板小车运动监测与控制系统 格雷母线

微深节能的平板小车运动监测与控制系统中的格雷母线&#xff0c;是一种高精度、非接触式的位移测量系统&#xff0c;在平板小车的运动监测与控制中发挥着核心作用。 一、系统组成 该系统主要由以下关键部件组成&#xff1a; 地面电气柜&#xff1a;包含地址jie码器等重要组件&a…