JavaScript腳本語(yǔ)言的入門(mén)概念
JavaScript(簡(jiǎn)稱(chēng) JS)是一種輕量級(jí)、解釋型、基于原型的動(dòng)態(tài)腳本語(yǔ)言,最初用于網(wǎng)頁(yè)交互,現(xiàn)已發(fā)展為全棧開(kāi)發(fā)(前端 + 后端 + 移動(dòng) + 桌面)的核心語(yǔ)言。以下從基本概念、核心語(yǔ)法和常用操作三方面系統(tǒng)介紹。
一、基本概念
1.運(yùn)行環(huán)境
- 瀏覽器:最常見(jiàn)(通過(guò)
<script>標(biāo)簽嵌入 HTML); - Node.js:服務(wù)端運(yùn)行環(huán)境(2009年推出,使 JS 可寫(xiě)后端);
- 其他:Electron(桌面應(yīng)用)、React Native(移動(dòng) App)等。
2.語(yǔ)言特性
| 特性 | 說(shuō)明 |
|---|---|
| 動(dòng)態(tài)類(lèi)型 | 變量無(wú)需聲明類(lèi)型,運(yùn)行時(shí)自動(dòng)推斷(let x = 5; x = "hello"; 合法) |
| 弱類(lèi)型 | 類(lèi)型可自動(dòng)轉(zhuǎn)換("5" + 3 → "53","5" - 3 → 2) |
| 基于原型(Prototype) | 對(duì)象繼承通過(guò)原型鏈實(shí)現(xiàn)(非類(lèi)繼承) |
| 單線程 + 事件循環(huán) | 通過(guò)異步回調(diào)、Promise、async/await 處理并發(fā) |
| 函數(shù)是一等公民 | 函數(shù)可賦值、傳參、返回(支持高階函數(shù)、閉包) |
3.ECMAScript 標(biāo)準(zhǔn)
- JavaScript 遵循 ECMAScript(ES) 規(guī)范;
- 常見(jiàn)版本:ES5(2009)、ES6/ES2015(重大更新)、ES2022+(每年更新);
- 現(xiàn)代開(kāi)發(fā)推薦使用 ES6+ 語(yǔ)法。
二、核心語(yǔ)法
1.變量聲明
// var(已不推薦):函數(shù)作用域,存在變量提升 var name = "Alice"; // let(塊級(jí)作用域,可重新賦值) let age = 25; age = 26; // const(塊級(jí)作用域,不可重新賦值) const PI = 3.14159; // PI = 3.14; // ? 報(bào)錯(cuò)
? 最佳實(shí)踐:優(yōu)先用
const,需要重賦值時(shí)用let,避免var。
2.數(shù)據(jù)類(lèi)型(7種)
基本類(lèi)型(Primitive):
typeof 42 // "number"
typeof "hello" // "string"
typeof true // "boolean"
typeof undefined // "undefined"
typeof Symbol('id')// "symbol" (ES6)
typeof BigInt(123) // "bigint" (ES2020)
引用類(lèi)型(Object):
typeof {} // "object"
typeof [] // "object"(數(shù)組是對(duì)象!)
typeof null // "object"(歷史 bug,實(shí)際是 null)
typeof function(){}// "function"
?? 判斷數(shù)組:
Array.isArray(arr)
判斷 null:value === null
3.運(yùn)算符
- 算術(shù):
+ - * / % **(指數(shù)) - 比較:
==(寬松相等,會(huì)類(lèi)型轉(zhuǎn)換)、===(嚴(yán)格相等,推薦) - 邏輯:
&& || ! - 三元:
condition ? expr1 : expr2 - 空值合并:
??(a ?? b→ a 為 null/undefined 時(shí)返回 b)
0 == false // true(類(lèi)型轉(zhuǎn)換) 0 === false // false(類(lèi)型不同) "" ?? "hi" // ""(空字符串不是 null/undefined) null ?? "hi" // "hi"
4.控制結(jié)構(gòu)
// if-else
if (score > 90) {
console.log("A");
} else if (score > 80) {
console.log("B");
} else {
console.log("C");
}
// switch
switch (day) {
case 1: console.log("Mon"); break;
default: console.log("Invalid");
}
// for 循環(huán)
for (let i = 0; i < 5; i++) { ... }
// for...of(遍歷可迭代對(duì)象:數(shù)組、字符串等)
for (const item of [1, 2, 3]) { ... }
// for...in(遍歷對(duì)象鍵名)
for (const key in obj) { ... }5.函數(shù)
函數(shù)聲明 vs 表達(dá)式
// 聲明(有提升)
function greet(name) {
return "Hello " + name;
}
// 表達(dá)式(無(wú)提升)
const add = function(a, b) {
return a + b;
};
// 箭頭函數(shù)(ES6,簡(jiǎn)潔,無(wú) this 綁定)
const square = x => x * x;
const sum = (a, b) => { return a + b; };默認(rèn)參數(shù) & 解構(gòu)
function createUser({name, age = 18}) {
return {name, age};
}
createUser({name: "Bob"}); // {name: "Bob", age: 18}
6.對(duì)象(Object)
// 創(chuàng)建
const person = {
name: "Alice",
age: 30,
// 方法
greet() {
return `Hi, I'm ${this.name}`;
}
};
// 訪問(wèn)屬性
person.name // "Alice"
person["age"] // 30
// 添加/修改
person.email = "a@example.com";
// 刪除
delete person.age;7.數(shù)組(Array)
const fruits = ["apple", "banana"];
// 常用方法
fruits.push("orange"); // 末尾添加
fruits.pop(); // 末尾刪除
fruits.unshift("grape"); // 開(kāi)頭添加
fruits.shift(); // 開(kāi)頭刪除
fruits.slice(1, 3); // 截?。ú恍薷脑瓟?shù)組)
fruits.splice(1, 1, "kiwi"); // 從索引1刪1個(gè),插入"kiwi"
// 高階函數(shù)(函數(shù)式編程)
fruits.map(fruit => fruit.toUpperCase()); // 轉(zhuǎn)換
fruits.filter(fruit => fruit.length > 5); // 過(guò)濾
fruits.reduce((acc, f) => acc + f, ""); // 聚合三、基本操作與實(shí)用技巧
1.DOM 操作(瀏覽器環(huán)境)
<button id="btn">Click</button>
<script>
// 獲取元素
const btn = document.getElementById("btn");
// 綁定事件
btn.addEventListener("click", () => {
alert("Button clicked!");
});
// 修改內(nèi)容
document.querySelector("h1").textContent = "New Title";
</script>2.異步編程
回調(diào)函數(shù)(Callback)
setTimeout(() => {
console.log("Delayed");
}, 1000);
Promise(ES6)
fetch("/api/data")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
async/await(ES2017,推薦)
async function fetchData() {
try {
const response = await fetch("/api/data");
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
3.模塊化(ES6 Modules)
// math.js
export const PI = 3.14;
export function add(a, b) { return a + b; }
// main.js
import { PI, add } from './math.js';
console.log(add(2, 3)); // 5?? 瀏覽器中需在
<script type="module">中使用。
4.錯(cuò)誤處理
try {
// 可能出錯(cuò)的代碼
JSON.parse("{ bad json }");
} catch (error) {
console.error("Error:", error.message);
} finally {
console.log("Cleanup");
}
四、現(xiàn)代 JavaScript 開(kāi)發(fā)要點(diǎn)
| 概念 | 說(shuō)明 |
|---|---|
| 嚴(yán)格模式 | "use strict"; → 報(bào)錯(cuò)更嚴(yán)格,避免隱式全局變量 |
| 解構(gòu)賦值 | const {name, age} = user; |
| 模板字符串 | `Hello ${name}`(支持多行) |
| 擴(kuò)展運(yùn)算符 | [...arr1, ...arr2], {...obj1, ...obj2} |
| 可選鏈 | user?.address?.city(避免 undefined 報(bào)錯(cuò)) |
| Promise.all | 并發(fā)執(zhí)行多個(gè)異步任務(wù) |
五、總結(jié):JavaScript 核心思想
“一切皆對(duì)象,函數(shù)是核心,異步是常態(tài)。”
- 靈活性:動(dòng)態(tài)類(lèi)型 + 原型繼承 → 快速開(kāi)發(fā);
- 生態(tài)強(qiáng)大:NPM(全球最大包倉(cāng)庫(kù))、React/Vue/Angular、Node.js;
- 全棧能力:一套語(yǔ)言打通前后端。
? 學(xué)習(xí)路徑建議:
- 掌握 ES6+ 語(yǔ)法(let/const、箭頭函數(shù)、Promise);
- 理解異步與事件循環(huán);
- 熟悉 DOM 操作(前端)或 Express(后端);
- 學(xué)習(xí)現(xiàn)代框架(如 React)。
?? 記住:JavaScript 不是“玩具語(yǔ)言”,而是構(gòu)建現(xiàn)代 Web 應(yīng)用的工業(yè)級(jí)工具。
到此這篇關(guān)于JavaScript腳本語(yǔ)言的簡(jiǎn)單介紹的文章就介紹到這了,更多相關(guān)js腳本語(yǔ)言?xún)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入解析JS實(shí)現(xiàn)3D標(biāo)簽云的原理與方法
這篇文章主要介紹了深入解析JS實(shí)現(xiàn)3D標(biāo)簽云的原理與方法,結(jié)合實(shí)例形式詳細(xì)分析了3D標(biāo)簽云原理、實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-08-08
showModalDialog模態(tài)對(duì)話框的使用詳解以及瀏覽器兼容
showModalDialog是jswindow對(duì)象的一個(gè)方法,和window.open一樣都是打開(kāi)一個(gè)新的頁(yè)面。區(qū)別是:showModalDialog打開(kāi)子窗口后,父窗口就不能獲取焦點(diǎn)了(也就是無(wú)法操作了)2014-01-01
JS實(shí)現(xiàn)判斷兩個(gè)日期不能跨年和跨月
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript語(yǔ)言實(shí)現(xiàn)判斷兩個(gè)日期不能跨年和跨月,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
uniapp開(kāi)發(fā)小程序?qū)崿F(xiàn)全局懸浮按鈕的代碼
這篇文章主要介紹了uniapp開(kāi)發(fā)小程序如何實(shí)現(xiàn)全局懸浮按鈕,但是在uniapp中式?jīng)]有window對(duì)象,和dom元素的,需要獲取頁(yè)面上節(jié)點(diǎn)的幾何信息,具體實(shí)例代碼詳細(xì)跟隨小編一起看看吧2022-03-03
使用Three.js實(shí)現(xiàn)太陽(yáng)系八大行星的自轉(zhuǎn)公轉(zhuǎn)示例代碼
這篇文章主要給大家介紹了關(guān)于如何使用Three.js實(shí)現(xiàn)太陽(yáng)系八大行星的自轉(zhuǎn)公轉(zhuǎn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Three.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
JS實(shí)現(xiàn)橫向拉伸動(dòng)感伸縮菜單效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)橫向拉伸動(dòng)感伸縮菜單效果,涉及javascript基于定時(shí)函數(shù)及鼠標(biāo)事件操作頁(yè)面元素動(dòng)態(tài)變換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

