2024-08-09

HTML5 提供了新的语义标签、表单增强、多媒体标签等特性。




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML5 Example</title>
</head>
<body>
    <header>页面头部</header>
    <nav>导航链接</nav>
    <section>
        <article>
            <header>文章标题</header>
            <p>这是一个段落。</p>
        </article>
    </section>
    <aside>侧边内容</aside>
    <footer>页面底部</footer>
</body>
</html>

CSS3 引入了更丰富的选择器、背景和边框的装饰效果、过渡和动画等特性。




/* CSS3 Example */
header {
    background: linear-gradient(to right, red, yellow);
    border-radius: 10px;
}
nav a {
    text-decoration: none;
    color: blue;
}
article section:nth-child(odd) {
    background-color: lightgrey;
}
aside {
    float: right;
    background: rgba(255, 0, 0, 0.5);
}
footer {
    transition: color 2s;
}
footer:hover {
    color: lightcoral;
}

ES6(ECMAScript 2015)引入了模块、类、箭头函数、let和const声明等新特性。




// ES6 Example
class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    greet() {
        console.log(`Hello, my name is ${this.name}`);
    }
}
 
const greet = () => console.log('Hello, World!');
 
import { sum } from './math';
console.log(sum(5, 7));

在实际开发中,可以结合这些新特性创建现代化的Web应用。




// 使用ES6的箭头函数简化代码
const add = (a, b) => a + b;
const subtract = (a, b) => a - b;
const multiply = (a, b) => a * b;
const divide = (a, b) => a / b;
 
// 使用模板字符串简化字符串拼接
const greet = name => `Hello, ${name}!`;
 
// 使用解构赋值简化参数获取
const printCoordinates = ({x, y}) => console.log(`Coordinates: (${x}, ${y})`);
 
// 使用rest参数简化参数处理
const sum = (...numbers) => numbers.reduce((total, num) => total + num, 0);
 
// 使用spread语法简化数组和对象的复制
const numbers = [1, 2, 3];
const cloneNumbers = [...numbers];
 
const person = { name: 'Alice', age: 25 };
const clonePerson = { ...person };
 
// 使用Promise和async/await简化异步代码
async function fetchUserData(userId) {
  try {
    const response = await fetch(`https://api.example.com/users/${userId}`);
    const user = await response.json();
    console.log(user);
  } catch (error) {
    console.error('Error fetching user data:', error);
  }
}
 
// 使用class和decorator简化面向对象编程
class MyClass {
  @log
  method() {
    console.log('This method has been logged.');
  }
}
 
function log(target, name, descriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function() {
    console.log(`Calling ${name} with arguments:`, arguments);
    originalMethod.apply(this, arguments);
  };
}
 
// 使用import和export简化模块导入和导出
// math.js
export function add(a, b) {
  return a + b;
}
export function subtract(a, b) {
  return a - b;
}
 
// main.js
import { add, subtract } from './math.js';
console.log(add(5, 3)); // 输出: 8
console.log(subtract(5, 3)); // 输出: 2

这个代码示例展示了如何使用ES6及其后续版本的特性来简化和优化JavaScript代码。箭头函数、模板字符串、解构赋值、rest参数、spread语法、Promise、async/await和装饰器都被用来改进代码质量和可读性。同时,这也演示了如何使用import和export来进行模块化管理。

2024-08-07

在JavaScript中,箭头函数是一种简写的函数表达方式,它可以使代码更加简洁。箭头函数通常用于简化回调函数的编写,例如在数组的forEach方法中。

以下是使用ES6箭头函数和forEach遍历数组的示例代码:




// 定义一个普通函数作为forEach的回调
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(number) {
  console.log(number);
});
 
// 使用箭头函数简化上述代码
numbers.forEach(number => console.log(number));

在上面的例子中,我们定义了一个包含五个数字的数组numbers。首先使用普通的函数表达式作为forEach的回调函数,然后我们用箭头函数替换这个回调函数,并且去掉了花括号,因为函数体只有一个console.log语句。箭头函数的语法是:(参数) => 表达式或语句。如果函数体只有一个表达式,可以省略花括号,并且直接返回这个表达式的结果。

2024-08-04

JS的ES6版本引入了许多新特性,使得JavaScript编程变得更加简洁、灵活和高效。以下是ES6的主要知识点:

  1. 变量声明

    • let:用于声明块级作用域的变量,解决了var的变量提升问题。
    • const:用于声明常量,不可重新赋值。
  2. 函数定义

    • 箭头函数:简化了函数定义的语法。
    • 函数参数默认值。
    • rest参数:用于接收可变数量的参数。
    • spread参数:用于将一个数组的元素作为多个参数传递给函数。
  3. 类定义

    • 使用class关键字定义类。
    • 类的构造函数和实例方法。
    • 静态属性和静态方法。
    • 继承和原型链。
  4. 模块化

    • 使用importexport关键字实现模块的导入和导出。
    • 模块的命名空间。
    • 模块的类型定义。
  5. 模板字符串

    • 使用反引号(``)定义模板字符串。
    • 在模板字符串中插入表达式和变量。
  6. Promise

    • 用于处理异步操作的编程模式。
    • Promise的状态和生命周期。
    • Promise的构造函数和实例方法。
  7. Proxy和Reflect

    • Proxy用于创建一个代理对象,可以在运行时动态地操作目标对象。
    • Reflect用于获取和操作对象自身的元数据。
  8. 数组方法:扩展了数组的方法,如findfindIndexfillincludes等。
  9. 对象扩展:扩展了对象的属性和方法,如Object.valuesObject.entriesObject.keys等。
  10. 字符串扩展:扩展了字符串的方法,如padStartpadEndrepeat等。
  11. Math扩展:扩展了Math对象的属性和方法,如Math.signMath.clamp等。
  12. Date扩展:扩展了Date对象的属性和方法,如Date.nowDate.prototype.toLocaleDateString等。

掌握这些ES6的知识点将有助于你更加高效地使用JavaScript进行编程。