当前位置: 首页 > news >正文

JavaScript 前端开发:从入门到精通的奇幻之旅

目录

一、引言

二、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 方法来阻止表单的默认提交行为。


http://www.mrgr.cn/news/78789.html

相关文章:

  • AVL、B树和B+树
  • 华为新手机和支付宝碰一下 带来更便捷支付体验
  • 【Linux】SystemTap(类似Runtime Hook)在裁剪的系统运行不成功
  • Pytest框架学习20--conftest.py
  • 缓存方案分享
  • 【经典】星空主题的注册界面HTML,CSS,JS
  • 自动驾驶目标检测融合全貌
  • 点击A组件跳转到B页面的tab的某一列
  • 云备份实战项目
  • 探索嵌入式硬件设计:揭秘智能设备的心脏
  • 【Rust在WASM中实现pdf文件的生成】
  • debian 11 虚拟机环境搭建过坑记录
  • Flink常见面试题
  • 嵌入式C编程:宏定义与typedef的深入对比与应用
  • Python知识分享第十六天
  • Hadoop生态圈框架部署(九)- Hive部署
  • MySQL中如何减少回表
  • 微服务即时通讯系统的实现(服务端)----(3)
  • 基础Web安全|SQL注入
  • 《装甲车内的气体卫士:上海松柏 S-M4 智能型气体传感器详解》
  • 从0开始学PHP面向对象内容之常用设计模式(策略,观察者)
  • 腾讯微众银行前端面试题及参考答案
  • 提升分布式系统响应速度:分布式系统远程调用性能提升之道
  • 开源多媒体处理工具ffmpeg是什么?如何安装?使用ffmpeg将M3U8格式转换为MP4
  • Flink问题总结
  • 预处理详解(完结篇)