【ES6新特性】默認參數常見用法

ES6新特性之默認參數的多種用法

🚀默認參數基礎用法

在ES6中,我們可以直接在函數參數列表中為參數設置默認值:

// ES5的實現方式
function greet(name) {name = name || 'Guest';console.log(`Hello, ${name}!`);
}// ES6默認參數寫法
function greet(name = 'Guest') {console.log(`Hello, ${name}!`);
}greet(); // Hello, Guest!
greet('Alice'); // Hello, Alice!

特性說明:

  • 默認值僅在參數為undefined時生效
  • null會被認為是一個有效值,不會觸發默認值
  • 默認參數可以是任意表達式

🚀默認參數的進階用法

1. 結合解構賦值

// 對象解構默認值
function setOptions({ width = 100, height = 200, color = '#fff' 
} = {}) {console.log(width, height, color);
}setOptions({ width: 500 }); // 500 200 #fff
setOptions(); // 100 200 #fff// 數組解構默認值
function getFirst([firstItem = 0] = []) {return firstItem;
}

2. 后置參數默認值

function createElement(tag = 'div', content) {const elem = document.createElement(tag);elem.textContent = content;return elem;
}// 必須顯式傳遞undefined才能使用默認值
const div = createElement(undefined, 'Hello');

3. 動態默認值

function generateId(prefix = 'id', random = Math.random().toString(36).slice(2)) {return `${prefix}_${random}`;
}console.log(generateId()); // id_1a2b3c
console.log(generateId('user')); // user_4d5e6f

🚀默認參數的作用域

1. 參數順序依賴

function tricky(a = 1, b = a * 2) {console.log(a, b);
}tricky();     // 1 2
tricky(3);    // 3 6
tricky(2, 4); // 2 4

2. 暫時性死區(TDZ)

function example(a = b, b = 2) {// ? 錯誤:Cannot access 'b' before initialization
}function validExample(a = 2, b = a * 3) {// ? 正確
}

🚀實際應用場景

1. 配置項合并

function initPlugin(options = {}) {const defaults = {debug: false,maxRetry: 3,timeout: 5000};return { ...defaults, ...options };
}

2. API請求參數處理

async function fetchData({url = '/api/data',method = 'GET',headers = { 'Content-Type': 'application/json' }
} = {}) {try {const response = await fetch(url, { method, headers });return response.json();} catch (error) {console.error('Request failed:', error);}
}

🚀注意事項

  1. 箭頭函數的默認參數:
const multiply = (a = 1, b = 1) => a * b;
  1. 默認參數不計入函數length屬性:
function demo(a, b = 1, c) {}
console.log(demo.length); // 1
  1. 默認值表達式在每次調用時重新計算:
function getTime(now = Date.now()) {return now;
}console.log(getTime() === getTime()); // false

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

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

相關文章

LORA的AB矩陣是針對Transformer的多頭還是MLP

LORA的AB矩陣是針對Transformer的多頭還是MLP Transformer中的矩陣是一個整體還是分開的每個小矩陣 在LORA(Low-Rank Adaptation)中,AB矩陣的應用位置和Transformer中的矩陣拆分方式如下: 1. LORA的AB矩陣作用對象 LORA的AB矩陣主要作用于Transformer的多頭注意力模塊和…

【大模型基礎_毛玉仁】2.4 基于 Encoder-Decoder 架構的大語言模型

更多內容:XiaoJ的知識星球 目錄 2.4 基于 Encoder-Decoder 架構的大語言模型2.4.1 Encoder-Decoder 架構2.4.2 T5 語言模型1)T5 模型結構2)T5 預訓練方式3)T5 下游任務 2.4.3 BART 語言模型1)BART 模型結構2&#xff0…

browser-use WebUI + DeepSeek 基于AI的UI自動化解決方案

browser-use WebUI 一、browser-use是什么Browser-use采用的技術棧為: 二、browser-use webui 主要功能使用場景 三、使用教程1.python 安裝2、把項目clone下來3、安裝依賴4、配置環境5、啟動6、配置1.配置 Agent2.配置要用的大模型3.關于瀏覽器的一些設置 四、Deep…

WPF CommunityToolkit.MVVM庫的簡單使用

CommunityToolkit.MVVM 是 .NET 社區工具包中的一部分,它為實現 MVVM(Model-View-ViewModel)模式提供了一系列實用的特性和工具,能幫助開發者更高效地構建 WPF、UWP、MAUI 等應用程序。以下是關于它的詳細使用介紹: 1…

Windows安裝Apache Maven 3.9.9

第一步下載資源 官網:下載 Apache Maven – Maven 環境變量配置 M2_HOME 指向bin目錄 MAVEN_HOME 指向根目錄 M2_HOME 不確定是否必須要 Path配置 ,需要注意MAVEN順序應當在java之前 驗證是否安裝成功,在cmd中以管理員方式打開&#xff0c…

【spring-boot-starter-data-neo4j】創建結點和查找結點操作

配置連接neo4j # application.properties spring.neo4j.uribolt://localhost:7687 spring.neo4j.authentication.usernameneo4j spring.neo4j.authentication.password你的密碼定義實體類 package com.anmory.platform.GraphService.Dao;import org.springframework.data.neo…

pytorch小記(十三):pytorch中`nn.ModuleList` 詳解

pytorch小記(十三):pytorch中nn.ModuleList 詳解 PyTorch 中的 nn.ModuleList 詳解1. 什么是 nn.ModuleList?2. 為什么不直接使用普通的 Python 列表?3. nn.ModuleList 的基本用法示例:構建一個包含兩層全連…

Excel導出工具類--復雜的excel功能導出(使用自定義注解導出)

Excel導出工具類 前言: 簡單的excel導出,可以用easy-excel, fast-excel, auto-poi,在導出實體類上加上對應的注解,用封裝好的工具類直接導出,但對于復雜的場景, 封裝的工具類解決不了,要用原生的excel導出(easy-excel, fast-excel, auto-poi都支持原生的) 業務場景: 根據…

批量測試IP和域名聯通性2

在前面批量測試IP和域名聯通性-CSDN博客的基礎上,由于IP和域名多樣性,比如帶端口號的192.168.1.17:17,實際上應該ping 192.168.1.17。如果封禁http://www.abc.com/a.exe,實際可ping www.abc.com。所以又完善了代碼。 echo off se…

國產編輯器EverEdit - 語法著色文件的語法

1 語法著色定義(官方文檔) 1.1 概述 EverEdit有著優異的語法著色引擎,可以高亮現存的絕大多數的編程語言。在EverEdit的語法著色中有Region和Item兩個概念,Region表示著不同的區塊。而Item則代表著這些區塊中不同的部分。一般情況下,Region…

Excel處理控件Aspose.Cells教程:如何自動將 HTML 轉換為 Excel

在處理 HTML 表中呈現的結構化數據時,將 HTML 轉換為 Excel 是一種常見需求。無論您是從網站、報告還是任何其他來源提取數據,將其轉換為 Excel 都可以更好地進行分析、操作和共享。 開發人員通常更喜歡使用編程方法將 HTML 轉換為 Excel,因…

基于springbo校園安全管理系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 隨著信息時代的來臨,過去信息校園安全管理方式的缺點逐漸暴露,本次對過去的校園安全管理方式的缺點進行分析,采取計算機方式構建校園安全管理系統。本文通過閱讀相關文獻,研究國內外相關技術,提出了一種集進出校…

vim在連續多行行首插入相同的字符

工作中經常需要用vim注釋掉一段代碼或者json文件中的一部分,需要在多行前面插入//或者#符號。在 Vim 中,在連續多行行首插入相同字符主要有以下兩種方法: Visual Block 模式插入 將光標移到要插入相同內容的第一行的行首24。按下Ctrl v進入…

Git 實戰指南:本地客戶端連接 Gitee 全流程

本文將以 Gitee(碼云)、系統Windows 11 為例,詳細介紹從本地倉庫初始化到遠程協作的全流程操作 目錄 1. 前期準備1.1 注冊與配置 Gitee1.2 下載、安裝、配置客戶端1.3 配置公鑰到 Gitee2. 本地倉庫操作(PowerShell/Git Bash)2.1 初始化本地倉庫2.2 關聯 Gitee 遠程倉庫3. …

Pytest項目_day01(HTTP接口)

HTTP HTTP是一個協議(服務器傳輸超文本到瀏覽器的傳送協議),是基于TCP/IP通信協議來傳輸數據(HTML文件,圖片文件,查詢結果等)。 訪問域名 例如www.baidu.com就是百度的域名,我們想…

MySQL超詳細介紹(近2萬字)

1. 簡單概述 MySQL安裝后默認有4個庫不可以刪除,存儲的是服務運行時加載的不同功能的程序和數據 information_schema:是MySQL數據庫提供的一個虛擬的數據庫,存儲了MySQL數據庫中的相關信息,比如數據庫、表、列、索引、權限、角色等…

SQLMesh宏操作符深度解析:掌握@star與@GENERATE_SURROGATE_KEY實戰技巧

引言:解鎖SQLMesh的動態查詢能力 在復雜的數據處理場景中,手動編寫重復性SQL代碼不僅效率低下,還難以維護。SQLMesh作為新一代數據庫中間件,通過其強大的宏系統賦予開發者編程式構建查詢的能力。本文將重點解析兩個核心操作符——…

超詳細kubernetes部署k8s----一臺master和兩臺node

一、部署說明 1、主機操作系統說明 2、主機硬件配置說明 二、主機準備(沒有特別說明都是三臺都要配置) 1、配置主機名和IP 2、配置hosts解析 3、防火墻和SELinux 4、時間同步配置 5、配置內核轉發及網橋過濾 6、關閉swap 7、啟用ipvs 8、句柄…

高光譜相機在水果分類與品質檢測中的應用

一、核心應用領域 ?外部品質檢測? ?表面缺陷識別:通過400-1000nm波段的高光譜成像,可檢測蘋果表皮損傷、碰傷等細微缺陷,結合圖像分割技術實現快速分類?。 ?損傷程度評估:例如青香蕉的碰撞損傷會導致光譜反射率變化&#…

【藍橋杯每日一題】3.17

🏝?專欄: 【藍橋杯備篇】 🌅主頁: f狐o貍x 他們說內存泄漏是bug,我說這是系統在逼我進化成SSR級程序員 OK來吧,不多廢話,今天來點有難度的:二進制枚舉 二進制枚舉,就是…