JavaScript 学习笔记:基础与进阶

在现代前端开发中,JavaScript(简称JS)扮演着至关重要的角色。无论你是刚刚接触编程,还是已有开发经验,掌握JavaScript对于构建动态和交互性网站至关重要。本篇文章将总结学习JavaScript过程中的核心知识点,包括基础语法、进阶概念以及在实际项目中的应用。、

一、JavaScript 基础

1. 变量和数据类型

在JS中,我们通过 varletconst 来声明变量。三者的区别在于作用域和可变性:

  • var:声明的变量有函数作用域,可以重复声明。
  • let:有块级作用域,不能重复声明变量。
  • const:声明常量,值一旦赋值后不可修改。

示例:

javascript 复制代码
let age = 25;
const name = "Alice";
var isStudent = true;

2. 数据类型

JS 中的基本数据类型有:

  • Number:数字
  • String:字符串
  • Boolean:布尔值(true 或 false)
  • Null:空值
  • Undefined:未定义
  • Symbol:符号
  • Object:引用类型

示例:

javascript 复制代码
let number = 42;
let text = "Hello, World!";
let isAvailable = false;
let user = { name: "Bob", age: 30 };

3. 条件判断与循环

条件判断
  • if...else:根据条件执行代码块
  • switch:多条件匹配

示例:

javascript 复制代码
let score = 85;

if (score >= 90) {
    console.log("优秀");
} else if (score >= 60) {
    console.log("及格");
} else {
    console.log("不及格");
}
循环
  • for:常用的计数循环
  • while:在条件为 true 时执行

示例:

javascript 复制代码
for (let i = 0; i < 5; i++) {
    console.log(i);
}

let i = 0;
while (i < 5) {
    console.log(i);
    i++;
}

4. 函数

JavaScript 函数是可重用的代码块。函数有普通函数声明和箭头函数两种主要形式。

普通函数
javascript 复制代码
function greet(name) {
    return `Hello, ${name}`;
}

console.log(greet("Alice"));
箭头函数

箭头函数是 ES6 中引入的简洁写法:

javascript 复制代码
const greet = (name) => `Hello, ${name}`;

console.log(greet("Bob"));

二、JavaScript 进阶

1. ES6+ 新特性

解构赋值

解构赋值允许从数组或对象中提取值。

javascript 复制代码
// 数组解构
let [a, b] = [1, 2];

// 对象解构
let {name, age} = {name: "Alice", age: 25};
扩展运算符

扩展运算符 ... 可以展开数组或对象的元素:

javascript 复制代码
let arr = [1, 2, 3];
let newArr = [...arr, 4, 5];  // [1, 2, 3, 4, 5]

let obj = {a: 1, b: 2};
let newObj = {...obj, c: 3};  // {a: 1, b: 2, c: 3}

2. Promise 与异步编程

Promise

Promise 用于处理异步操作,避免了回调地狱。

javascript 复制代码
let promise = new Promise((resolve, reject) => {
    let success = true;
    if (success) {
        resolve("操作成功");
    } else {
        reject("操作失败");
    }
});

promise
    .then((message) => console.log(message))
    .catch((error) => console.log(error));
Async/Await

asyncawait 是 ES8 提供的异步编程语法糖,使异步代码看起来像同步代码。

javascript 复制代码
async function fetchData() {
    let response = await fetch("https://api.example.com/data");
    let data = await response.json();
    console.log(data);
}

fetchData();

3. DOM 操作

DOM(Document Object Model)是 JS 操作网页的接口,允许我们对页面进行增删改查。

获取元素
javascript 复制代码
let element = document.getElementById("myElement");
let elements = document.getElementsByClassName("myClass");
let query = document.querySelector(".myClass");

修改内容

javascript 复制代码
let element = document.getElementById("myElement");
element.innerText = "Hello, World!";
element.style.color = "red";

事件监听

javascript 复制代码
document.getElementById("myButton").addEventListener("click", function() {
    alert("Button clicked!");
});

三、JavaScript 应用场景

1. 表单验证

JavaScript 常用于前端表单验证,确保用户输入的有效性。

javascript 复制代码
function validateForm() {
    let name = document.forms["myForm"]["name"].value;
    if (name == "") {
        alert("Name must be filled out");
        return false;
    }
}

2. 动态内容加载

通过 AJAX 或 Fetch API,JavaScript 可以从服务器获取数据并动态更新页面内容。

javascript 复制代码
fetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => {
        document.getElementById('content').innerText = JSON.stringify(data);
    });

3. 动画与交互

JS 能让网页元素通过简单的代码实现动画效果,提升用户体验。

javascript 复制代码
document.getElementById("myButton").addEventListener("click", function() {
    document.getElementById("box").style.transform = "translateX(100px)";
});

四、常见问题和解决方案

1. JavaScript 闭包

闭包是指在函数内部定义的函数可以访问该函数所在的作用域。它常用于创建私有变量或函数。

javascript 复制代码
function createCounter() {
    let count = 0;
    return function() {
        return ++count;
    };
}

const counter = createCounter();
console.log(counter());  // 1
console.log(counter());  // 2

2. this 的指向

this 关键字指向当前函数执行的上下文对象,不同的调用方式可能会改变 this 的指向。

javascript 复制代码
function show() {
    console.log(this);
}

const obj = { name: 'Alice', show: show };
obj.show();  // this 指向 obj

五、学习建议与总结

  1. 多写代码:通过不断实践来巩固语法和概念。
  2. 理解基础:JS 的变量作用域、闭包、原型链等概念非常重要。
  3. 持续学习新特性:JS 生态系统在快速发展,跟进新的ES标准和技术栈更新。

这篇JavaScript学习笔记涵盖了从基础到进阶的核心概念,并且结合了实际应用的场景,希望能为你的学习之路提供帮助。如果觉得有用,请点赞、收藏并分享!

相关推荐
十八朵郁金香5 小时前
【VUE案例练习】前端vue2+element-ui,后端nodo+express实现‘‘文件上传/删除‘‘功能
前端·javascript·vue.js
__雨夜星辰__5 小时前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
学问小小谢5 小时前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
LCG元6 小时前
Vue.js组件开发-实现全屏图片文字缩放切换特效
前端·javascript·vue.js
还是鼠鼠7 小时前
图书管理系统 Axios 源码__新增图书
前端·javascript·vscode·ajax·前端框架·node.js·bootstrap
charlie1145141919 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
c语言·驱动开发·单片机·学习·教程·oled
马船长10 小时前
[BSidesCF 2020]Had a bad day1
学习
还是鼠鼠10 小时前
图书管理系统 Axios 源码 __删除图书功能
前端·javascript·vscode·ajax·前端框架·node.js·bootstrap
黄交大彭于晏10 小时前
三端回链增加截图功能
学习
轻口味10 小时前
Vue.js `Suspense` 和异步组件加载
前端·javascript·vue.js