JavaScript數(shù)組方法push()、forEach()、filter()、sort()實(shí)戰(zhàn)教程
前言
你是否在處理 JavaScript 數(shù)組數(shù)據(jù)時(shí),不知道該用哪個(gè)方法添加元素、遍歷數(shù)據(jù)、篩選內(nèi)容或排序?這篇教程將通過(guò)具體場(chǎng)景、可運(yùn)行代碼,以及常見(jiàn)錯(cuò)誤與解決方案,幫你徹底掌握 push()、forEach()、filter()、sort() 四個(gè)核心數(shù)組方法的功能與實(shí)際用法,學(xué)完就能直接在項(xiàng)目中落地。
一、push():給數(shù)組“尾部追加”元素
核心功能
push() 方法用于向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并且會(huì)返回更新后數(shù)組的長(zhǎng)度(注意:不是更新后的數(shù)組本身)。它會(huì)直接修改原始數(shù)組,這是一個(gè)重要特性。
適用場(chǎng)景
- 向列表中追加新數(shù)據(jù)(如用戶(hù)提交表單后,將新用戶(hù)信息加入用戶(hù)列表)
- 批量補(bǔ)充數(shù)據(jù)到數(shù)組尾部
- 動(dòng)態(tài)構(gòu)建數(shù)組(逐步添加元素)
可運(yùn)行代碼案例
// 1. 基礎(chǔ)用法:添加單個(gè)元素
const fruitList = ['蘋(píng)果', '香蕉', '橙子'];
// 調(diào)用push(),添加單個(gè)元素
const newLength1 = fruitList.push('葡萄');
console.log('添加單個(gè)元素后的數(shù)據(jù):', fruitList); // 輸出:['蘋(píng)果', '香蕉', '橙子', '葡萄']
console.log('更新后數(shù)組長(zhǎng)度:', newLength1); // 輸出:4
// 2. 進(jìn)階用法:添加多個(gè)元素
const numberArr = [1, 2, 3];
// 調(diào)用push(),批量添加多個(gè)元素(用逗號(hào)分隔)
const newLength2 = numberArr.push(4, 5, 6);
console.log('添加多個(gè)元素后的數(shù)據(jù):', numberArr); // 輸出:[1, 2, 3, 4, 5, 6]
console.log('更新后數(shù)組長(zhǎng)度:', newLength2); // 輸出:6
// 3. 實(shí)戰(zhàn)場(chǎng)景:用戶(hù)列表追加新用戶(hù)
const userList = [
{ id: 1, name: '張三', age: 25 },
{ id: 2, name: '李四', age: 28 }
];
// 新用戶(hù)數(shù)據(jù)
const newUser = { id: 3, name: '王五', age: 30 };
// 追加新用戶(hù)
userList.push(newUser);
console.log('追加新用戶(hù)后的列表:', userList);
// 輸出:[{ id:1, ... }, { id:2, ... }, { id:3, ... }]
常見(jiàn)錯(cuò)誤與解決方案
| 常見(jiàn)錯(cuò)誤 | 錯(cuò)誤描述 | 解決方案 |
|---|---|---|
| 錯(cuò)誤1:誤將push()返回值當(dāng)作更新后的數(shù)組 | 代碼示例:const newArr = fruitList.push('葡萄');,此時(shí)newArr是數(shù)字4(數(shù)組長(zhǎng)度),而非數(shù)組本身,導(dǎo)致后續(xù)操作報(bào)錯(cuò) | 1. 先調(diào)用push()修改原始數(shù)組;2. 若需保留原數(shù)組,先復(fù)制原數(shù)組(const newArr = [...fruitList]),再對(duì)復(fù)制后的數(shù)組調(diào)用push();3. 避免直接接收push()的返回值作為數(shù)組使用 |
| 錯(cuò)誤2:給非數(shù)組類(lèi)型調(diào)用push() | 代碼示例:const str = 'abc'; str.push('d');,字符串不是數(shù)組,沒(méi)有push()方法,報(bào)錯(cuò)Uncaught TypeError: str.push is not a function | 1. 先確認(rèn)目標(biāo)變量是數(shù)組類(lèi)型(可用Array.isArray(obj)判斷);2. 若為類(lèi)數(shù)組/字符串,先轉(zhuǎn)換為數(shù)組(字符串轉(zhuǎn)數(shù)組:Array.from(str),類(lèi)數(shù)組轉(zhuǎn)數(shù)組:[...arguments]) |
| 錯(cuò)誤3:批量添加數(shù)組時(shí),直接傳入數(shù)組導(dǎo)致二維數(shù)組 | 代碼示例:const arr = [1,2]; arr.push([3,4]);,結(jié)果為[1,2,[3,4]](非預(yù)期的[1,2,3,4]) | 1. 使用擴(kuò)展運(yùn)算符:arr.push(...[3,4]),將數(shù)組展開(kāi)為單個(gè)元素后追加;2. 也可使用concat()方法(const newArr = arr.concat([3,4]),不修改原數(shù)組) |
二、forEach():遍歷數(shù)組的“萬(wàn)能工具”
核心功能
forEach() 方法用于遍歷數(shù)組的每一個(gè)元素,并對(duì)每個(gè)元素執(zhí)行你指定的回調(diào)函數(shù)。它沒(méi)有返回值(返回 undefined),僅用于執(zhí)行遍歷操作,可選擇性地修改原始數(shù)組(取決于回調(diào)函數(shù)內(nèi)的操作)。
適用場(chǎng)景
- 遍歷數(shù)組并打印/展示所有元素
- 對(duì)數(shù)組中每個(gè)元素執(zhí)行統(tǒng)一操作(如格式化數(shù)據(jù)、累加計(jì)算)
- 無(wú)需返回新數(shù)組,僅需遍歷處理的場(chǎng)景
可運(yùn)行代碼案例
// 1. 基礎(chǔ)用法:遍歷數(shù)組并打印每個(gè)元素
const animalArr = ['老虎', '大象', '熊貓', '猴子'];
console.log('動(dòng)物列表遍歷結(jié)果:');
animalArr.forEach((animal, index) => {
// 回調(diào)函數(shù)參數(shù):item(當(dāng)前元素)、index(當(dāng)前索引,可選)、array(原數(shù)組,可選)
console.log(`索引${index}:${animal}`);
});
// 輸出:
// 索引0:老虎
// 索引1:大象
// 索引2:熊貓
// 索引3:猴子
// 2. 進(jìn)階用法:遍歷數(shù)組并累加計(jì)算
const scoreArr = [85, 92, 78, 90, 88];
let totalScore = 0;
// 遍歷分?jǐn)?shù)數(shù)組,累加總分
scoreArr.forEach(score => {
totalScore += score;
});
const averageScore = totalScore / scoreArr.length;
console.log('總分:', totalScore); // 輸出:431
console.log('平均分:', averageScore); // 輸出:86.2
// 3. 實(shí)戰(zhàn)場(chǎng)景:格式化數(shù)組元素(給商品名稱(chēng)添加前綴)
const productList = ['手機(jī)', '電腦', '平板', '耳機(jī)'];
const formatProductList = [];
// 遍歷商品列表,格式化后存入新數(shù)組
productList.forEach(product => {
formatProductList.push(`熱銷(xiāo)-${product}`);
});
console.log('格式化后的商品列表:', formatProductList);
// 輸出:['熱銷(xiāo)-手機(jī)', '熱銷(xiāo)-電腦', '熱銷(xiāo)-平板', '熱銷(xiāo)-耳機(jī)']
常見(jiàn)錯(cuò)誤與解決方案
| 常見(jiàn)錯(cuò)誤 | 錯(cuò)誤描述 | 解決方案 |
|---|---|---|
| 錯(cuò)誤1:試圖用return終止forEach()遍歷 | 代碼示例:animalArr.forEach(animal => { if (animal === '熊貓') return; console.log(animal); }),return僅跳過(guò)當(dāng)前循環(huán),無(wú)法終止整個(gè)遍歷,仍會(huì)打印“猴子” | 1. 若需終止遍歷,放棄forEach(),使用for循環(huán)/for...of循環(huán)(可通過(guò)break終止);2. 若僅需跳過(guò)部分元素,return可正常使用 |
| 錯(cuò)誤2:誤將forEach()當(dāng)作有返回值的方法 | 代碼示例:const newArr = productList.forEach(p => 熱銷(xiāo)-${p});,newArr值為undefined,非預(yù)期數(shù)組 | 1. 先創(chuàng)建空數(shù)組,在forEach()回調(diào)內(nèi)用push()存入處理后的數(shù)據(jù)(如案例3);2. 直接使用map()方法(專(zhuān)門(mén)用于返回處理后的新數(shù)組,更簡(jiǎn)潔) |
| 錯(cuò)誤3:遍歷中修改數(shù)組長(zhǎng)度導(dǎo)致遍歷不完整/死循環(huán) | 代碼示例:const arr = [1,2,3]; arr.forEach(item => { arr.push(item * 2); }),會(huì)無(wú)限追加元素導(dǎo)致死循環(huán);若刪除元素則會(huì)跳過(guò)部分元素 | 1. 遍歷前先復(fù)制數(shù)組([...arr]),遍歷復(fù)制后的數(shù)組,修改原始數(shù)組;2. 避免在forEach()中直接增刪原始數(shù)組的元素,防止破壞遍歷結(jié)構(gòu) |
| 錯(cuò)誤4:回調(diào)函數(shù)中使用this指向丟失(普通函數(shù)寫(xiě)法) | 代碼示例:const obj = { num: 10 }; arr.forEach(function(item) { console.log(this.num); }),此時(shí)this指向window(非嚴(yán)格模式),輸出undefined | 1. 使用箭頭函數(shù)(不綁定自身this,繼承外部上下文):arr.forEach(item => console.log(this.num));2. 傳入thisArg作為forEach()第二個(gè)參數(shù):arr.forEach(function(item) {}, obj) |
三、filter():篩選數(shù)組的“精準(zhǔn)過(guò)濾器”
核心功能
filter() 方法用于根據(jù)指定條件篩選數(shù)組元素,它會(huì)返回一個(gè)全新的數(shù)組(包含所有滿(mǎn)足條件的元素),不會(huì)修改原始數(shù)組。如果沒(méi)有滿(mǎn)足條件的元素,會(huì)返回一個(gè)空數(shù)組。
適用場(chǎng)景
- 按條件篩選數(shù)據(jù)(如篩選大于10的數(shù)字、篩選成年用戶(hù))
- 排除數(shù)組中的無(wú)效數(shù)據(jù)(如篩選非空字符串、排除值為null的元素)
- 多條件組合篩選(如篩選年齡在20-30歲之間的女性用戶(hù))
可運(yùn)行代碼案例
// 1. 基礎(chǔ)用法:篩選滿(mǎn)足單一條件的元素
const numArr = [12, 5, 28, 7, 35, 1, 40];
// 篩選大于20的數(shù)字
const bigNumArr = numArr.filter(num => {
return num > 20;
});
console.log('原始數(shù)組:', numArr); // 輸出:[12,5,28,7,35,1,40]
console.log('大于20的數(shù)字?jǐn)?shù)組:', bigNumArr); // 輸出:[28,35,40]
// 2. 進(jìn)階用法:多條件組合篩選
const studentList = [
{ name: '小明', gender: '男', age: 18, score: 90 },
{ name: '小紅', gender: '女', age: 17, score: 95 },
{ name: '小剛', gender: '男', age: 19, score: 85 },
{ name: '小麗', gender: '女', age: 18, score: 92 },
{ name: '小亮', gender: '男', age: 17, score: 88 }
];
// 篩選:女性 && 年齡18歲 && 分?jǐn)?shù)大于90
const targetStudents = studentList.filter(student => {
return student.gender === '女' && student.age === 18 && student.score > 90;
});
console.log('滿(mǎn)足條件的學(xué)生:', targetStudents); // 輸出:[{ name: '小麗', ... }]
// 3. 實(shí)戰(zhàn)場(chǎng)景:排除無(wú)效數(shù)據(jù)(篩選非空、非undefined的用戶(hù)名)
const userNameList = ['張三', '', '李四', undefined, '王五', null, '趙六'];
// 篩選有效用戶(hù)名(排除空字符串、undefined、null)
const validUserNameList = userNameList.filter(name => {
return name !== '' && name !== undefined && name !== null;
});
console.log('原始用戶(hù)名列表:', userNameList);
console.log('有效用戶(hù)名列表:', validUserNameList); // 輸出:['張三', '李四', '王五', '趙六']
常見(jiàn)錯(cuò)誤與解決方案
| 常見(jiàn)錯(cuò)誤 | 錯(cuò)誤描述 | 解決方案 |
|---|---|---|
| 錯(cuò)誤1:忘記在回調(diào)函數(shù)中返回判斷條件 | 代碼示例:const bigNumArr = numArr.filter(num => { num > 20; }),回調(diào)函數(shù)無(wú)返回值(默認(rèn)返回undefined),最終返回空數(shù)組 | 1. 顯式添加return關(guān)鍵字(如案例1);2. 使用箭頭函數(shù)簡(jiǎn)寫(xiě)(省略大括號(hào),自動(dòng)返回表達(dá)式結(jié)果):numArr.filter(num => num > 20) |
| 錯(cuò)誤2:混淆filter()與forEach(),用filter()執(zhí)行無(wú)返回值的操作 | 代碼示例:numArr.filter(num => console.log(num)),雖能遍歷打印,但會(huì)額外生成無(wú)意義的空數(shù)組,造成性能浪費(fèi) | 1. 僅當(dāng)需要篩選并返回新數(shù)組時(shí)使用filter();2. 若僅需遍歷執(zhí)行操作(無(wú)返回?cái)?shù)組需求),使用forEach()/for循環(huán) |
| 錯(cuò)誤3:篩選引用類(lèi)型數(shù)據(jù)時(shí),誤判“空對(duì)象/空數(shù)組”為無(wú)效數(shù)據(jù) | 代碼示例:const arr = [{}, [], 123]; const newArr = arr.filter(item => item),{}和[]為真值,會(huì)被保留,若需排除空對(duì)象/數(shù)組則篩選失敗 | 1. 排除空對(duì)象:判斷對(duì)象自身屬性數(shù)量 Object.keys(item).length > 0;2. 排除空數(shù)組:判斷數(shù)組長(zhǎng)度 item.length > 0;3. 組合判斷:arr.filter(item => !(Array.isArray(item) && item.length === 0) && !(typeof item === 'object' && item !== null && Object.keys(item).length === 0)) |
| 錯(cuò)誤4:多條件篩選時(shí)邏輯運(yùn)算符使用錯(cuò)誤(&&與||混淆) | 代碼示例:篩選“年齡18或19歲的女生”,誤寫(xiě)為student.gender === '女' && student.age === 18 && student.age === 19,無(wú)滿(mǎn)足條件的元素,返回空數(shù)組 | 1. 明確邏輯關(guān)系:“且”用&&,“或”用` |
四、sort():排序數(shù)組的“靈活排序器”
核心功能
sort() 方法用于對(duì)數(shù)組元素進(jìn)行排序,默認(rèn)情況下按「字符串Unicode編碼」升序排列(注意:這是容易踩坑的點(diǎn)),它會(huì)直接修改原始數(shù)組。同時(shí)支持傳入自定義比較函數(shù),實(shí)現(xiàn)數(shù)字升序/降序、對(duì)象屬性排序等靈活需求。
適用場(chǎng)景
- 數(shù)字?jǐn)?shù)組升序/降序排序(如分?jǐn)?shù)從高到低排序)
- 字符串?dāng)?shù)組排序(如按姓名拼音首字母排序)
- 對(duì)象數(shù)組按指定屬性排序(如按用戶(hù)年齡、商品價(jià)格排序)
可運(yùn)行代碼案例
// 1. 注意點(diǎn):默認(rèn)排序(字符串Unicode編碼,不適合數(shù)字排序)
const defaultNumArr = [10, 2, 35, 7, 100];
defaultNumArr.sort();
console.log('數(shù)字默認(rèn)排序結(jié)果:', defaultNumArr); // 輸出:[10, 100, 2, 35, 7](不符合預(yù)期)
// 2. 基礎(chǔ)用法:數(shù)字?jǐn)?shù)組升序/降序排序(傳入自定義比較函數(shù))
const sortNumArr = [10, 2, 35, 7, 100];
// 數(shù)字升序排序:a - b
sortNumArr.sort((a, b) => a - b);
console.log('數(shù)字升序排序:', sortNumArr); // 輸出:[2, 7, 10, 35, 100]
// 數(shù)字降序排序:b - a
sortNumArr.sort((a, b) => b - a);
console.log('數(shù)字降序排序:', sortNumArr); // 輸出:[100, 35, 10, 7, 2]
// 3. 進(jìn)階用法:對(duì)象數(shù)組按指定屬性排序
const goodsList = [
{ name: '手機(jī)', price: 4999 },
{ name: '電腦', price: 7999 },
{ name: '平板', price: 2999 },
{ name: '耳機(jī)', price: 999 }
];
// 按商品價(jià)格升序排序(從便宜到貴)
goodsList.sort((a, b) => a.price - b.price);
console.log('按價(jià)格升序排序的商品:', goodsList);
// 輸出:[{ name: '耳機(jī)', price:999 }, { name: '平板', price:2999 }, ...]
// 按商品價(jià)格降序排序(從貴到便宜)
goodsList.sort((a, b) => b.price - a.price);
console.log('按價(jià)格降序排序的商品:', goodsList);
// 輸出:[{ name: '電腦', price:7999 }, { name: '手機(jī)', price:4999 }, ...]
// 4. 實(shí)戰(zhàn)場(chǎng)景:字符串?dāng)?shù)組排序(按姓名排序)
const nameList = ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'];
// 按字符串Unicode編碼升序排序(英文姓名適用)
nameList.sort();
console.log('姓名升序排序:', nameList); // 輸出:['Li Si', 'Wang Wu', 'Zhang San', 'Zhao Liu']
常見(jiàn)錯(cuò)誤與解決方案
| 常見(jiàn)錯(cuò)誤 | 錯(cuò)誤描述 | 解決方案 |
|---|---|---|
| 錯(cuò)誤1:直接對(duì)數(shù)字?jǐn)?shù)組使用默認(rèn)sort()排序,結(jié)果不符合預(yù)期 | 代碼示例:const arr = [10,2,100]; arr.sort();,結(jié)果為[10,100,2],而非數(shù)字升序[2,10,100] | 1. 傳入自定義比較函數(shù)實(shí)現(xiàn)數(shù)字排序:升序(a,b) => a - b,降序(a,b) => b - a(如案例2);2. 牢記:默認(rèn)sort()按字符串Unicode編碼排序,不適用數(shù)字場(chǎng)景 |
| 錯(cuò)誤2:對(duì)象數(shù)組排序時(shí),直接比較對(duì)象而非對(duì)象的屬性 | 代碼示例:goodsList.sort((a,b) => a - b),a和b是對(duì)象,無(wú)法直接相減,報(bào)錯(cuò)NaN,排序失敗 | 1. 排序時(shí)指定對(duì)象的具體屬性:(a,b) => a.price - b.price(如案例3);2. 若屬性是字符串,可直接傳入屬性名(或使用localeCompare()優(yōu)化中文排序) |
| 錯(cuò)誤3:忽略sort()會(huì)修改原始數(shù)組,導(dǎo)致原數(shù)組數(shù)據(jù)丟失 | 代碼示例:需要保留原始數(shù)組,卻直接調(diào)用arr.sort(),原數(shù)組被篡改 | 1. 排序前先復(fù)制原始數(shù)組(使用擴(kuò)展運(yùn)算符[...arr]、Array.from(arr)或arr.slice());2. 對(duì)復(fù)制后的數(shù)組執(zhí)行排序:const sortedArr = [...arr].sort((a,b) => a - b) |
| 錯(cuò)誤4:中文字符串排序時(shí),默認(rèn)sort()結(jié)果混亂(按Unicode編碼,非拼音/筆畫(huà)) | 代碼示例:const chineseArr = ['張三', '李四', '王五']; chineseArr.sort();,排序結(jié)果可能不符合中文使用習(xí)慣 | 1. 使用localeCompare()方法優(yōu)化中文排序:chineseArr.sort((a,b) => a.localeCompare(b, 'zh-CN'));2. 該方法支持按拼音、筆畫(huà)排序(可配置額外參數(shù)) |
五、總結(jié)
- push():尾部追加元素,修改原始數(shù)組,返回新長(zhǎng)度;避坑重點(diǎn):不接收返回值作為數(shù)組,批量添加用擴(kuò)展運(yùn)算符。
- forEach():遍歷所有元素,無(wú)返回值;避坑重點(diǎn):無(wú)法用
return終止遍歷,不用于生成新數(shù)組。 - filter():條件篩選元素,返回新數(shù)組,不修改原數(shù)組;避坑重點(diǎn):必須返回判斷條件,區(qū)分邏輯運(yùn)算符
&&與||。 - sort():數(shù)組排序,修改原始數(shù)組,默認(rèn)按字符串編碼排序;避坑重點(diǎn):數(shù)字排序傳自定義比較函數(shù),對(duì)象排序比較具體屬性,需保留原數(shù)組先復(fù)制。
這四個(gè)方法是 JavaScript 數(shù)組操作的基礎(chǔ),掌握它們的功能、場(chǎng)景及避坑技巧后,能高效處理大部分?jǐn)?shù)組數(shù)據(jù)處理需求,所有代碼均可直接復(fù)制到瀏覽器控制臺(tái)或 Node.js 環(huán)境中運(yùn)行驗(yàn)證。
到此這篇關(guān)于JavaScript數(shù)組方法push()、forEach()、filter()、sort()的文章就介紹到這了,更多相關(guān)JS數(shù)組push()、forEach()、filter()、sort()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JS中filter( )數(shù)組過(guò)濾器的使用
- JavaScript遍歷數(shù)組的三種方法map、forEach與filter實(shí)例詳解
- JavaScript 數(shù)組some()和filter()的用法及區(qū)別
- JavaScript中find()、findIndex()、filter()、indexOf()處理數(shù)組方法的具體區(qū)別詳解
- js 數(shù)組 find,some,filter,reduce區(qū)別詳解
- JS中的常見(jiàn)數(shù)組遍歷案例詳解(forEach,?map,?filter,?sort,?reduce,?every)
- JavaScript數(shù)組常用方法find、findIndex、filter、map、flatMap及some詳解
- JavaScript 數(shù)組的常用方法find 和 filter詳解及區(qū)別介紹
相關(guān)文章
解讀JavaScript代碼 var ie = !-[1,] 最短的IE判定代碼
這句代碼在IE9之前曾被稱(chēng)為世界上最短的IE判定代碼。代碼雖短但確包含了不少javascript基礎(chǔ)知識(shí)在里面。2011-05-05
JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法【測(cè)試可用】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)正則去除a標(biāo)簽并保留內(nèi)容的方法,結(jié)合實(shí)例形式詳細(xì)分析了javascript針對(duì)a標(biāo)簽及span標(biāo)簽的正則匹配相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
簡(jiǎn)單實(shí)現(xiàn)js菜單欄切換效果
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)js菜單欄切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
基于JS實(shí)現(xiàn)二維碼圖片固定在右下角某處并跟隨滾動(dòng)條滾動(dòng)
這篇文章主要介紹了基于JS實(shí)現(xiàn)二維碼圖片固定在右下角某處并跟隨滾動(dòng)條滾動(dòng),代碼簡(jiǎn)單易懂非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
web前端開(kāi)發(fā)upload上傳頭像js示例代碼
這篇文章主要為大家詳細(xì)介紹了web前端開(kāi)發(fā)upload上傳頭像js示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
基于javascript實(shí)現(xiàn)仿百度輸入框自動(dòng)匹配功能
這篇文章主要介紹了基于javascript實(shí)現(xiàn)仿百度輸入框自動(dòng)匹配功能的相關(guān)資料,需要的朋友可以參考下2016-01-01
js通過(guò)循環(huán)多張圖片實(shí)現(xiàn)動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了js通過(guò)循環(huán)多張圖片實(shí)現(xiàn)動(dòng)畫(huà)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
單線程的JavaScript為什么可以異步執(zhí)行任務(wù)
JS作為單線程語(yǔ)言通過(guò)?事件循環(huán)機(jī)制實(shí)現(xiàn)異步任務(wù)處理,核心在于將耗時(shí)操作放入后臺(tái)線程處理,主線程繼續(xù)執(zhí)行其他任務(wù),本文剖析JavaScript的異步處理原理,從單線程設(shè)計(jì)的原因到具體實(shí)現(xiàn)機(jī)制,最后通過(guò)偽代碼模擬整個(gè)異步處理流程,感興趣的朋友跟隨小編一起看看吧2025-08-08
JavaScript學(xué)習(xí)筆記之DOM基礎(chǔ)操作實(shí)例小結(jié)
這篇文章主要介紹了JavaScript學(xué)習(xí)筆記之DOM基礎(chǔ)操作,結(jié)合實(shí)例形式總結(jié)分析了javascript針對(duì)dom元素節(jié)點(diǎn)、屬性的相關(guān)獲取、設(shè)置等操作技巧,需要的朋友可以參考下2019-01-01

