簡單聊一聊js

JavaScript 是一種高級的、解釋型的編程語言。它是現代 Web 開發的三大核心基石之一,與 HTML 和 CSS 并列。

  • ?HTML?:負責網頁的結構和內容?(如標題、段落、圖片)。

  • ?CSS?:負責網頁的樣式和布局?(如顏色、字體、間距)。

  • ?JavaScript?:負責網頁的行為與交互?(如點擊按鈕彈出菜單、數據驗證、動態更新內容)。

如今,JavaScript 早已超越了瀏覽器,通過 Node.js 等環境,它可以用于服務器端編程、桌面應用、移動應用甚至物聯網設備。


核心概念一:JavaScript 是什么?

  1. ?解釋型語言 (Interpreted)??:代碼在運行時逐行被解釋和執行,無需像 C++ 或 Java 那樣先編譯成二進制文件。這使得開發迭代非常快速。

  2. ?動態類型 (Dynamically Typed)??:變量在聲明時不需要指定其數據類型(如 string, number)。同一個變量可以在不同時刻被賦予不同類型的值。

    let x = 10;      // x 是一個數字
    x = "Hello";     // 現在 x 是一個字符串
  3. ?單線程與異步機制?:JavaScript 在瀏覽器中通常是單線程運行的,這意味著它一次只能做一件事。為了處理耗時的操作(如網絡請求、讀寫文件)而不阻塞界面,它使用了事件循環 (Event Loop)?? 和回調函數 (Callbacks)?? 機制,后來又發展出 ?Promise? 和 ?async/await? 語法,使得異步代碼更容易編寫和理解。

  4. ?基于原型 (Prototype-based)??:JavaScript 是一種基于原型的面向對象語言,而不是基于類的(盡管 ES6 引入了 class語法糖,但其底層仍然是基于原型)。對象可以直接從其他對象繼承屬性和方法。


核心概念二:JavaScript 能做什么?

  1. ?瀏覽器端 (前端)??:

    • ?操作 DOM?:動態地添加、刪除、修改 HTML 元素和 CSS 樣式。

    • ?處理事件?:響應用戶的操作,如點擊、鼠標移動、鍵盤輸入、表單提交等。

    • ?數據驗證?:在表單提交到服務器前,先檢查用戶輸入的數據是否有效。

    • ?與服務器通信?:通過 AjaxFetch API從服務器獲取數據,或向服務器發送數據,從而實現頁面的無刷新更新(這構成了現代單頁應用 SPA 的基礎)。

    • ?動畫?:創建復雜的動畫和效果。

  2. ?服務器端 (后端)??:

    • 通過 ?Node.js?(一個讓 JavaScript 脫離瀏覽器運行的運行時環境),可以構建快速的、可擴展的網絡應用和服務器。

    • 可以處理數據庫操作、用戶認證、API 接口開發等(常見框架有 Express.js, Koa.js)。

  3. ?其他領域?:

    • ?桌面應用?:使用 Electron(如 VS Code, Slack, Discord)或 NW.js。

    • ?移動應用?:使用 React Native, Ionic 或 NativeScript。

    • ?游戲開發?:常與 HTML5 Canvas 或 WebGL 結合使用。

    • ?物聯網 (IoT)??:運行在資源受限的設備上。


核心概念三:現代 JavaScript (ES6+) 的重要特性

自 2015 年發布 ES6 (ECMAScript 2015) 以來,JavaScript 語言發生了巨大的進化,添加了許多使代碼更簡潔、更強大的新特性。這些是現代開發的基礎。

  1. ?letconst聲明?:取代老舊的 var,提供了塊級作用域和更 predictable 的變量行為。const用于聲明常量。

    if (true) {let blockScoped = "I'm inside the block";const constantValue = "I cannot be changed";
    }
    // console.log(blockScoped); // 會報錯,因為 blockScoped 在這里不存在
  2. ?箭頭函數 (Arrow Functions)??:提供了一種更簡潔的函數寫法,并且不綁定自己的 this值。

    // 傳統函數
    const addOld = function(a, b) {return a + b;
    };// 箭頭函數
    const addNew = (a, b) => a + b;
  3. ?模板字符串 (Template Literals)??:使用反引號 `${}語法來嵌入變量和表達式,支持多行字符串。

    const name = "Alice";
    const greeting = `Hello, ${name}!
    Welcome to our website.`;
  4. ?解構賦值 (Destructuring Assignment)??:從數組或對象中快速提取值并賦給變量。

    // 數組解構
    const [first, second] = [10, 20];// 對象解構 - 在 React 中提取 props 時極其常用!
    const person = { name: 'Bob', age: 30 };
    const { name, age } = person;
  5. ?模塊化 (Modules)??:使用 importexport語法來組織和復用代碼,這是構建大型應用的關鍵。

    // math.js (導出)
    export const pi = 3.14;
    export function add(a, b) { return a + b; }// app.js (導入)
    import { pi, add } from './math.js';
  6. ?Promise 和 async/await?:用于更優雅地處理異步操作,避免“回調地獄”。

    // 使用 Promise 和 async/await 獲取數據
    async function fetchData() {try {const response = await fetch('https://api.example.com/data');const data = await response.json();console.log(data);} catch (error) {console.error('Error:', error);}
    }
  7. ?擴展運算符和剩余參數?:...運算符,用于展開數組/對象或收集參數。

    // 展開數組
    const parts = ['shoulders', 'knees'];
    const body = ['head', ...parts, 'toes']; // ['head', 'shoulders', 'knees', 'toes']// 收集剩余參數
    function logArguments(first, ...rest) {console.log(first, rest);
    }

JavaScript 與 React 的關系

  • ?React 是一個用 JavaScript 編寫的庫。要學習 React,你必須先牢固掌握 JavaScript,特別是 ?ES6+ 的現代特性

  • React 組件本質上就是返回 JSX 的 JavaScript 函數。你在組件中使用的所有邏輯(變量、函數、條件判斷、循環、狀態管理)都是純正的 JavaScript。

  • 理解 JavaScript 的數組方法?(如 map, filter, reduce)、對象操作解構賦值異步處理對于編寫高效的 React 代碼至關重要。

總結

JavaScript 是一門強大、靈活且無處不在的編程語言,它是 Web 交互性的靈魂。從簡單的表單驗證到復雜的全棧應用,JavaScript 都是不可或缺的核心技術。學習現代 JavaScript (ES6+) 的特性,是成為一名高效的前端或后端(Node.js)開發者的必經之路。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96079.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

造粒機cad+設計說明書

摘要 隨著現代化工業的快速發展,生產出大量的固體廢棄物。這些廢棄物對環境造成了很大的污染,因此需要采取有效的措施進行處理。機械強壓式造粒機就是一種非常有效的處理工具,它可以將廢渣、廢料、飼料和化肥等材料通過機械強力擠壓&#xff…

第五課 C#語言基本元素概覽,初始類型,變量與方法,算法簡介

熟悉C#語言要求:對構成C#語言的基本元素,隨便拿出一個你都認識,對于常見基本元素,都能正確使用它 精通C#語言要求:對于構成C#語言的基本元素,隨便拿出一個都會使用,對于常用基本元素&#xff0…

LLM學習:大模型基礎——視覺大模型以及autodl使用

1、常見的VLM 在大模型中,VLM 是視覺語言模型(Vision-Language Model)的縮寫,是一種多模態、生成式 AI 模型,能夠理解和處理視頻、圖像和文本。 VLM 通過將大語言模型(LLM)與視覺編碼器相結合構建而成,使 LLM 具有 “看” 的能力,從而可以處理并提供對提示中的…

Vue—路由配置中設置了meta.title,但頁面標題仍然顯示為“Vite App“?【讓我來看看~】

路由配置中明明設置了meta.title,但是頁面標題仍然顯示為"Vite App"?這是因為僅僅在路由配置中設置meta.title是不夠的,還需要在路由守衛中動態設置頁面標題。需要做以下幾件事來正確設置頁面標題:1.首先更新HTML文件的…

【機器學習】綜合實訓(二)

項目五 電影評分預測【教學內容】使用 MovieLens 數據集,訓練一個模型預測用戶對電影的評分。主要有以下幾個知識點:(1)數據加載與探索性分析(EDA)。(2)處理稀疏數據(如用…

STM32 UART + DMA + 空閑中斷使用中的幀錯誤(FE)問題及解決方案

STM32 UART + DMA + IDLE中斷使用中的幀錯誤(FE)問題及解決方案 在我調試STM32H7串口空閑中斷DMA接受時遇到了一個bug,這個現象發生在系統剛上電時,有個串口由于幀錯誤FE掛起了中斷,之后在HAL_UART_IRQHandler這個全局中斷處理函數結束后,所有的中斷使能標志位都被清除了,經過…

TDengine 選擇函數 BOTTOM() 用戶手冊

BOTTOM() 函數用戶手冊 函數定義 BOTTOM(expr, k)功能說明 BOTTOM() 函數統計表/超級表中某列的值最小 k 個非 NULL 值。如果多條數據取值一樣,全部取用又會超出 k 條限制時,系統會從相同值中隨機選取符合要求的數量返回。 返回值 數據類型: 同應用…

西門子 S7-200 SMART PLC 實現星三角降壓啟動控制:原理、案例與完整程序

在工業控制場景中,中型異步電機直接啟動時會產生遠超額定電流的沖擊電流(通常為額定電流的 5-7 倍),不僅會影響電網穩定性,還可能對機械設備造成損傷。星三角(Y-Δ)降壓啟動是解決這一問題的經典…

【Android】View 的基礎知識

【Android】View 的基礎知識 1. 什么是 View? View 是 Android 中所有UI組件的基礎類。它表示屏幕上的一個矩形區域,負責繪制內容和處理用戶交互事件。所有的 UI 組件(如按鈕、文本框等)都是 View 的子類,而 ViewGroup…

西門子 S7-200 SMART PLC 實現電機點動與連續運行綜合控制

在工業生產中,電機控制并非單一模式:調試設備時需要 “按動即轉、松開即停” 的點動功能,正常生產時則需要 “一鍵啟動、持續運行” 的連續控制。本文以西門子 S7-200 SMART PLC 為載體,詳細講解電機點動控制原理,并設…

如何解決pip安裝報錯ModuleNotFoundError: No module named ‘sphinx-rtd-theme’問題

【Python系列Bug修復PyCharm控制臺pip install報錯】如何解決pip安裝報錯ModuleNotFoundError: No module named ‘sphinx-rtd-theme’問題 摘要 在使用 PyCharm 開發 Python 項目時,pip install 報錯是常見痛點。特別是在構建文檔或引入第三方庫時,開…

HakcMyVM-Literal

目錄信息搜集漏洞利用權限提升信息搜集 主機發現 ┌──(kali?kali)-[~] └─$ nmap -sn 192.168.21.0/24 Nmap scan report for 192.168.21.5端口掃描 ┌──(kali?kali)-[~] └─$ nmap -sS -sV -O -p- 192.168.21.5 Starting Nmap 7.95 ( https://nmap.org ) a…

0904 類的繼承

Part 1.梳理思維導圖一.繼承中的特殊成員函數1.構造函數父類的構造函數會被繼承到子類中&#xff0c;在構造的順序中&#xff0c;是先構造父類&#xff0c;再構造子類#include <iostream>using namespace std;class Father { public:string name; protected:int *age; pr…

PDF教程|如何把想要的網頁保存下來?

前段時間有個小伙伴咨詢了小白&#xff1a;領導想要某個網頁的整個頁面&#xff0c;有沒有比較好的方法把它保存下來&#xff1f; 在他找到小白之前&#xff0c;這種事情他已經接到好幾次了&#xff0c;每次都是怎么解決的呢&#xff1f;其實很簡單&#xff0c;就是打開Word&a…

【bash】命令查看當前目錄下文件個數

要用 ls 查看當前目錄下的文件個數&#xff0c;可以結合 wc -l 來統計行數&#xff1a; ls -1 | wc -l說明&#xff1a; ls -1&#xff1a;以一行一個文件的方式列出。wc -l&#xff1a;統計行數&#xff0c;也就是文件/目錄的數量。 ?? 需要注意&#xff1a; 這個方法會把文…

「日拱一碼」081 機器學習——梯度增強特征選擇GBFS

目錄 什么是梯度增強特征選擇&#xff08;GBFS&#xff09; 為什么 GBM 適合做特征選擇 GBFS 的一般步驟 代碼示例 什么是梯度增強特征選擇&#xff08;GBFS&#xff09; GBFS 并非一個像 Lasso 或隨機森林那樣有嚴格標準定義的獨立算法&#xff0c;而是一種基于梯度提升機…

解構匯編, 萬物起源

匯編的誕生匯編全景圖核心主干: CPU架構主要分支: 語法和工具共同的地貌: 核心概念延伸: 跨平臺 & 跨架構跨平臺跨架構總結以 GAS vs. NASM 為例NASM 不支持跨架構 ≠ 無法在ARM架構上的系統安裝匯編的誕生 機器語言的困境 早期的程序員直接使用機器語言進行編程機器語言由…

廣州旅游網站系統 - 純靜態旅游展示平臺

&#x1f31f; 廣州旅游網站系統 - 純靜態旅游展示平臺觀世界才有世界觀 - 一個集景區展示、旅游攻略、文化傳播于一體的精美旅游網站&#x1f4cb; 項目概述 這是一個專注于廣州旅游文化的純靜態網站系統&#xff0c;采用現代化的前端技術棧&#xff0c;為游客提供全方位的廣州…

Qt UDP通信學習

Qt UDP通信學習 一、項目概述 本項目基于Qt框架實現了UDP通信功能&#xff0c;支持單播與廣播消息收發&#xff0c;展示了UDP套接字的基本用法&#xff0c;適合初學者學習Qt網絡模塊的實際應用。 二、項目結構 55.pro&#xff1a;Qt工程文件&#xff0c;配置模塊與源碼文件main…

古德哈特定律(Goodhart‘s Law)

古德哈特定律&#xff08;Goodhart’s Law&#xff09;表述為“當一個指標變成了目標&#xff0c;它將不再是個好指標”。 該定律由英國經濟學家查爾斯古德哈特&#xff08;Charles Goodhart&#xff09;在1975年提出&#xff0c;最初用于批判撒切爾夫人政府的貨幣主義政策&…