ECMAScript (ES) 是一種標(biāo)準(zhǔn)化的腳本語言規(guī)范,它是 JavaScript 語言的基礎(chǔ)
基本語法結(jié)構(gòu):
-
變量聲明:
- 使用
var
(ES5 及以前版本)、let
(ES6 起引入)或const
(ES6 起引入)關(guān)鍵字聲明變量。
var x = 10; // ES5 變量聲明,作用域為函數(shù)作用域 let y = 20; // ES6 變量聲明,塊級作用域 const z = 30; // ES6 常量聲明,聲明后不可再重新賦值
- 使用
-
數(shù)據(jù)類型:
- 基本數(shù)據(jù)類型:
number
、string
、boolean
、null
、undefined
、symbol
(ES6 新增)。 - 引用數(shù)據(jù)類型:
object
(包括數(shù)組、函數(shù)、正則等)。
- 基本數(shù)據(jù)類型:
-
條件判斷和循環(huán):
-
if...else
、switch
條件語句。 -
for
、while
、do...while
循環(huán),以及for...of
(ES6 新增,遍歷可迭代對象)和for...in
(遍歷對象的可枚舉屬性)。
-
-
函數(shù):
- 函數(shù)聲明:
function add(a, b) { return a + b; }
- 函數(shù)表達(dá)式:
const add = function(a, b) { return a + b; };
- 箭頭函數(shù)(ES6 新增):
const add = (a, b) => a + b;
- 函數(shù)聲明:
-
對象字面量:
const person = { name: 'John Doe', age: 30, sayHello: function() { console.log('Hello!'); } };
-
模板字符串(ES6 新增):
const name = 'Alice'; const greeting = `Hello, ${name}!`;
-
解構(gòu)賦值(ES6 新增):
const obj = { a: 1, b: 2 }; const { a, b } = obj; // 等同于 const a = obj.a; const b = obj.b;
-
剩余參數(shù)和擴(kuò)展運算符(ES6 新增):
function sum(...numbers) { return numbers.reduce((total, n) => total + n, 0); } const arr1 = [1, 2]; const arr2 = [3, 4]; const combined = [...arr1, ...arr2]; // [1, 2, 3, 4]
-
類(Class)(ES6 新增):
class Person { constructor(name) { this.name = name; } sayName() { console.log(this.name); } }
-
模塊系統(tǒng)(ES6 Modules):
// 導(dǎo)出 export const pi = 3.14; // 導(dǎo)入 import { pi } from './math.js';
-
自動插入分號(Semicolon Insertion):
- ECMAScript 規(guī)范允許在某些情況下省略語句末尾的分號,但為了避免潛在的語法錯誤,推薦在每個語句結(jié)束時明確添加分號。
當(dāng)然,除了前面提到的之外,ECMAScript 還有很多其它重要的特性:
- ECMAScript 規(guī)范允許在某些情況下省略語句末尾的分號,但為了避免潛在的語法錯誤,推薦在每個語句結(jié)束時明確添加分號。
-
解構(gòu)賦值(Destructuring Assignment):
- 除了可以對對象進(jìn)行解構(gòu)賦值外,還可以對數(shù)組進(jìn)行解構(gòu):
const [a, , b] = [1, 2, 3]; // a = 1, b = 3
- 除了可以對對象進(jìn)行解構(gòu)賦值外,還可以對數(shù)組進(jìn)行解構(gòu):
-
默認(rèn)參數(shù)值(Default Parameter Values):
function greet(name = 'Guest') { console.log(`Hello, ${name}!`); } greet(); // 輸出 "Hello, Guest!"
-
展開操作符(Spread Operator):
- 除了用于數(shù)組擴(kuò)展,還可以用于對象合并:
const obj1 = { a: 1, b: 2 }; const obj2 = { c: 3, d: 4 }; const newObj = { ...obj1, ...obj2 }; // newObj = { a: 1, b: 2, c: 3, d: 4 }
- 除了用于數(shù)組擴(kuò)展,還可以用于對象合并:
-
迭代器(Iterators and Generators):
- 通過
Symbol.iterator
屬性實現(xiàn)迭代器協(xié)議的對象可以使用for...of
循環(huán)進(jìn)行迭代:const myArray = [1, 2, 3]; for (let num of myArray) { console.log(num); }
- 生成器(Generators)通過
function*
關(guān)鍵字定義,可以暫停和恢復(fù)執(zhí)行:function* countDown(n) { while (n > 0) { yield n--; } } const gen = countDown(5); console.log(gen.next().value); // 5 console.log(gen.next().value); // 4
- 通過
-
箭頭函數(shù)的簡寫形式:
- 當(dāng)函數(shù)體只有一個表達(dá)式且需要返回該表達(dá)式的值時,可以省略花括號和
return
關(guān)鍵字:const square = (n) => n * n;
- 當(dāng)函數(shù)體只有一個表達(dá)式且需要返回該表達(dá)式的值時,可以省略花括號和
-
Proxy 和 Reflect:
-
Proxy
用于創(chuàng)建一個對象的代理,它可以攔截并修改操作行為。 -
Reflect
是一組與Object
對象操作方法相對應(yīng)的靜態(tài)方法集合,用于操作對象。
-
-
Symbol:
-
Symbol
是一種原始數(shù)據(jù)類型,可以用來創(chuàng)建唯一的標(biāo)識符。
-
-
Set 和 Map 數(shù)據(jù)結(jié)構(gòu):
-
Set
是一個值的集合,不會出現(xiàn)重復(fù)值。 -
Map
是鍵值對的集合,鍵可以是任何類型的值。
-
-
異步迭代器(Async Iterators):
- 允許對異步產(chǎn)生的數(shù)據(jù)進(jìn)行迭代。
-
異步函數(shù)(Async/Await):文章來源:http://www.zghlxwxcb.cn/news/detail-847778.html
- 用于簡化異步編程,使得異步代碼看起來更像是同步代碼:
async function fetchUser(id) { const response = await fetch(`/api/users/${id}`); const user = await response.json(); return user; }
- 用于簡化異步編程,使得異步代碼看起來更像是同步代碼:
以上列舉的是一些 ECMAScript 中的重要特性,實際上,隨著每年新版本的發(fā)布,還會有更多功能和優(yōu)化持續(xù)加入到 ECMAScript 語言規(guī)范中。文章來源地址http://www.zghlxwxcb.cn/news/detail-847778.html
到了這里,關(guān)于ECMAScript (ES)簡介的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!