【三大前端語言之一】交互:JavaScript詳解

【三大前端語言之一】交互:JavaScript詳解

在學習完HTML和CSS之后,最后一門前端語言——JavaScript,是重中之重。HTML負責頁面結構,CSS負責頁面樣式,而JavaScript則賦予網頁“生命”,讓網頁可以動起來、響應用戶操作,實現各種動態交互效果。

本文將系統介紹JavaScript的核心概念與常用知識,包括語法基礎、數據類型、控制結構、函數、對象、DOM操作、事件機制、異步編程、模塊化、以及在現代前端開發中的實際應用。無論你是初學者,還是希望打好JavaScript基礎的開發者,這篇文章都將為你提供全面、深入又易于理解的學習資料。


一、JavaScript簡介

什么是JavaScript?

JavaScript是一種運行在瀏覽器端的腳本語言,用于增強網頁的交互性。它可以用來響應用戶操作、操作DOM、發送請求、處理數據,甚至構建整個前端應用。

JavaScript的特點:

  • 解釋性語言:不需要編譯,瀏覽器直接解釋執行。
  • 基于對象:支持面向對象編程。
  • 弱類型動態語言:變量類型可變,使用靈活。
  • 事件驅動:用戶交互可觸發事件執行。
  • 跨平臺:只要有瀏覽器就能運行。

二、JavaScript語法基礎

1. 變量定義

let name = "Tom";
const PI = 3.14;
var age = 20;
  • let:塊級作用域,推薦使用。
  • const:定義常量。
  • var:函數級作用域,已逐漸被淘汰。

2. 數據類型

JavaScript 中主要的數據類型包括:

  • 原始類型:String, Number, Boolean, Undefined, Null, Symbol, BigInt
  • 引用類型:Object, Array, Function, Date, 等等
let str = "Hello";
let num = 123;
let isOk = true;
let obj = { name: "Tom" };
let arr = [1, 2, 3];

3. 運算符

  • 算術運算符:+, -, *, /, %
  • 賦值運算符:=, +=, -=, *=, /=
  • 比較運算符:==, ===, !=, !==, >, <
  • 邏輯運算符:&&, ||, !
  • 類型判斷:typeof, instanceof

三、流程控制語句

1. 條件判斷

if (age > 18) {console.log("成年人");
} else {console.log("未成年");
}

2. switch語句

switch (color) {case "red":console.log("紅色");break;default:console.log("其他顏色");
}

3. 循環結構

  • for循環
  • while循環
  • for...in:用于遍歷對象屬性
  • for...of:用于遍歷數組
js
復制編輯
for (let i = 0; i < 5; i++) {console.log(i);
}

四、函數與作用域

1. 函數聲明與表達式

function sayHello(name) {return "Hello, " + name;
}const add = function (a, b) {return a + b;
};

2. 箭頭函數

const multiply = (x, y) => x * y;

3. 作用域與閉包

  • 全局作用域、函數作用域、塊級作用域
  • 閉包是指函數可以“記住”并訪問其定義時的作用域。
function outer() {let count = 0;return function () {count++;return count;};
}const counter = outer();
console.log(counter()); // 1
console.log(counter()); // 2

五、對象與數組

1. 對象

let person = {name: "Alice",age: 25,sayHi() {console.log("Hi!");},
};

2. 數組方法

  • push(), pop(), shift(), unshift()
  • forEach(), map(), filter(), reduce()
let numbers = [1, 2, 3];
let doubled = numbers.map(n => n * 2); // [2, 4, 6]

六、DOM操作基礎

1. 選中元素

document.getElementById("myId");
document.querySelector(".myClass");
document.querySelectorAll("div");

2. 修改內容與屬性

element.textContent = "新內容";
element.setAttribute("href", "https://example.com");

3. 修改樣式

element.style.color = "red";

七、事件監聽與交互

添加事件監聽器:

button.addEventListener("click", function () {alert("按鈕被點擊了");
});

常見事件類型:

  • click, mouseover, mouseout
  • keydown, keyup, submit, change

八、異步編程與Ajax

1. 定時器

setTimeout(() => {console.log("1秒后執行");
}, 1000);

2. 回調函數

處理異步結果:

function loadData(callback) {setTimeout(() => {callback("數據加載完成");}, 2000);
}

3. Promise

let promise = new Promise((resolve, reject) => {setTimeout(() => resolve("成功"), 1000);
});
promise.then(result => console.log(result));

4. async/await

async function getData() {let data = await fetch("/api/data");let result = await data.json();console.log(result);
}

九、模塊化與ES6+

隨著前端項目日益復雜,JavaScript模塊化成為開發的主流。

// a.js
export const name = "Tom";// b.js
import { name } from "./a.js";

現代JavaScript(ES6+)還引入了諸如解構賦值、模板字符串、展開運算符、類、Promise、箭頭函數等新特性,大大提升了開發效率與代碼可讀性。


十、瀏覽器API與存儲

  • localStorage / sessionStorage:本地數據存儲
  • fetch:發送HTTP請求
  • History APILocation API:控制地址欄和跳轉

十一、前端框架初識(Vue / React)

雖然不是本文重點,但必須指出的是:現代前端項目大多采用如 Vue.jsReact.js 這樣的框架,它們的核心仍是JavaScript。學習這些框架之前,一定要扎實掌握原生JS的基礎。


十二、總結一下

JavaScript是網頁的靈魂,是前端開發的“中樞神經”。它能讓靜態網頁變得“活”起來,實現復雜交互、數據處理、網絡請求等功能。學好JavaScript,意味著你真正邁入了前端開發的核心地帶。

學習JavaScript的過程可能會遇到一些“繞腦”的概念,比如閉包、原型鏈、異步編程等。但只要你持續實踐、善于總結,它們終將變得清晰可控。

如果大家覺得本文寫得還不錯的話,歡迎點贊收藏一下,這是我更新的動力~

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

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

相關文章

LangChain面試內容整理-知識點12:檢索器(Retriever)接口與實現

在LangChain中,檢索器(Retriever)是一個抽象接口,負責根據用戶查詢從數據源中檢索相關文檔。可以把Retriever理解為“搜索工具”:給它一個未經結構化的查詢文本(如用戶問題),它返回一組與之相關的 Document 對象。內部可以基于向量相似度、數據庫查詢、甚至網絡搜索。 …

LLVM前端和優化層

文章目錄 LLVM ArchitectueLLVM 前端Lexical Analysis詞法分析Syntactic analysis 語法分析Syntactic Analyze語義分析 LLVM 優化層Pass 基礎概念Pass 依賴關系Pass API 總結 LLVM Architectue LLVM 前端 LLVM 的前端其實是把源代碼也就是 C、C、Python 這些高級語言變為編譯器…

工作流和Agent 的區別與聯系

工作流和智能體可能讓人混淆的地方就是他們都可能有大模型的加持&#xff0c;都可能有工具的加入供大模型調用&#xff0c;本文做一下對比和聯系 工作流 (Workflow) 定義&#xff1a; 工作流是一系列預定義、結構化且可重復的步驟或任務&#xff0c;旨在完成特定的業務目標或解…

leetcode--用StringBulider反轉字符串單詞的巧妙解法

反轉字符串中的單詞 這道題理想中的操作方式就是先去除前導和尾隨空格&#xff0c;之后設一個尾指針&#xff0c;往前檢索&#xff0c;掃到一個單詞就把這個單詞放到字符串的第一個位置。 很明顯&#xff0c;java中我們不能直接對字符串進行修改&#xff0c;而我們想實現一個一…

連鎖零售行業智慧能源管理解決方案:精準管控,讓每一度電創造價值

在連鎖超市、便利店等業態中&#xff0c;門店分布廣、用能場景復雜、管理成本高是普遍難題。傳統能源管理模式依賴人工抄表與分散管理&#xff0c;存在數據滯后、響應效率低、安全隱患難排查等問題。以某全國幾千家門店的連鎖便利店為例&#xff0c;其面臨的挑戰包括&#xff1…

在 PostgreSQL 中實現 `lck`, `special`, `item` 與 `org_id` 或 `user_id` 組合唯一的約束

在 PostgreSQL 中實現 lck, special, item 與 org_id 或 user_id 組合唯一的約束 要實現 lck, special, item 這三個字段必須與 org_id 或 user_id 中的一個&#xff08;但不能同時&#xff09;組合唯一的約束&#xff0c;你需要創建以下約束&#xff1a; 方案1&#xff1a;使…

g++ a.cpp -o a ‘pkg-config --cflags --libs opencv4‘/usr/bin/ld: 找不到 沒有那個文件或目錄

這個錯誤表明 pkg-config 命令沒有正確執行&#xff0c;導致編譯器無法找到 OpenCV 的庫文件和頭文件路徑。pkg-config 是一個工具&#xff0c;用于查詢已安裝庫的編譯和鏈接選項。如果 pkg-config 無法找到 OpenCV 的配置文件&#xff0c;就會導致這個錯誤。 以下是解決這個問…

定制平板在智能家居中能做些什么?全面解析其核心功能

大家有沒有發現&#xff0c;現在智能家居越來越普及了&#xff0c;很多家庭都在逐步升級自己的居住體驗。而在這一過程中&#xff0c;一種設備正悄悄地取代我們以前常用的開關面板和手機APP&#xff0c;成為整個家庭智能控制的核心&#xff0c;這就是——定制平板。 它可不是我…

【通俗易懂】Linux 線程調度策略詳解

引言&#xff1a;CPU是廚房&#xff0c;調度器是主廚 要真正理解Linux如何處理成千上萬個并發任務&#xff0c;不妨把它想象成一個繁忙的專業廚房。這個比喻不僅能讓抽象概念變得具體&#xff0c;更能揭示其背后深刻的設計哲學。 廚房 (The Kitchen): 代表整個計算機系統。 廚…

筆記本電腦安裝win10哪個版本好_筆記本裝win10專業版圖文教程

筆記本電腦安裝win10哪個版本好&#xff1f;筆記本還是建議安裝win10專業版。Win分為多個版本&#xff0c;其中家庭版&#xff08;Home&#xff09;和專業版&#xff08;Pro&#xff09;是用戶選擇最多的兩個版本。win10專業版在功能以及安全性方面有著明顯的優勢&#xff0c;所…

微服務循環依賴調用引發的血案

問題表現 最近的迭代轉測后遇到了一個比較有意思的問題。在測試環境整體運行還算平穩&#xff0c;但是過一段時間之后&#xff0c;就開始有接口超時了&#xff0c;日志中出現非常多的 “java.net.SocketTimeoutException: Read timed out”。試了幾次重啟大法&#xff0c;每次…

LeetCode - 852. 山脈數組的峰頂索引

題目 852. 山脈數組的峰頂索引 - 力扣&#xff08;LeetCode&#xff09; 思路 使用二分查找來定位峰頂 對于中間元素&#xff0c;比較它與其右側元素的大小&#xff1a; 如果 arr[mid] < arr[mid1]&#xff0c;說明我們在上坡階段&#xff0c;峰頂在右側 如果 arr[mid…

國產ARM/RISCV與OpenHarmony物聯網項目(二)網關數據顯示

本文需要Web服務器開發基礎&#xff0c;可參考下述博文&#xff1a; 物聯網網關Web服務器--lighttpd服務器部署與應用測試 物聯網網關Web服務器--CGI開發接口 一、數據顯示界面與功能設計 1、功能設計說明 程序代碼結構如下&#xff0c;調用關系見彩色部分標示。 數據顯示界面…

Robyn高性能Web框架系列01:Robyn快速入門

Robyn快速入門 安裝 Robyn1、僅安裝基礎 HTTP 路由功能2、帶擴展功能的安裝 第一個Robyn程序1、創建Robyn應用2、Say Hello!3、啟動Robyn應用 Python世界從來不缺少對于性能的追求&#xff0c;Robyn就是其中之一&#xff0c;它將 Python 的異步功能與 Rust 相結合&#xff0c;在…

微信小程序 -----無限新增刪除,同時算出總合算金額。

<view class="refuelMoney-main" style="padding-bottom: 200rpx;"><!-- <view class="add_record">添加加油記錄</view> --><view class="refuel-itemTextArea"><text style="width: 35%;&quo…

linux “Permission Denied“解決方案

Linux 編譯錯誤排查 在軟件開發過程中&#xff0c;編譯錯誤和版本控制問題是開發者每天都會遇到的挑戰。本文將結合實際案例&#xff0c;詳細講解 Linux 環境下常見編譯錯誤的排查方法 權限拒絕錯誤&#xff08;Permission Denied&#xff09; 當執行腳本或程序時&#xff0…

【慧游魯博】【15】后臺管理系統功能完善:儀表盤、多模態交互日志、簡單問答詞條管理

文章目錄 本次更新多模態交互日志效果涉及代碼文件 儀表盤&#xff08;部分&#xff09;效果涉及代碼文件 簡單問答服務詞條管理效果涉及代碼文件 本次更新 代碼真的太多太多了&#xff0c;不放代碼了 多模態交互日志 數據概覽與篩選功能 時間范圍篩選&#xff1a;提供"…

【力扣 簡單 C】21. 合并兩個有序鏈表

目錄 題目 解法一&#xff1a;迭代 解法二&#xff1a;遞歸 題目 解法一&#xff1a;迭代 struct ListNode* merge(struct ListNode* head1, struct ListNode* head2) {struct ListNode* virHead malloc(sizeof(*virHead));struct ListNode* curNode virHead;struct List…

【開源工具】Windows屏幕控制大師:息屏+亮度調節+快捷鍵一體化解決方案

??? 從零打造Windows屏幕控制大師:息屏+亮度調節+快捷鍵一體化解決方案 ?? 個人主頁:創客白澤 - CSDN博客 ?? 系列專欄:??《Python開源項目實戰》 ?? 熱愛不止于代碼,熱情源自每一個靈感閃現的夜晚。愿以開源之火,點亮前行之路。 ?? 希望大家多多支持,我們一…

pyhton基礎【11】函數一

目錄 一.函數說明 二.函數介紹 函數簡介 作用 函數分類 三.自定義函數 定義函數 調用函數 pass關鍵字 定義一次執行多次 一.函數說明 Python中的函數是一個重要的編程概念&#xff0c;它允許編程者封裝代碼塊以實現特定的功能。函數的作用和應用場景非常廣泛&#xf…