JavaScript 函數參數 | JavaScript 教程

2021-03-01 跟誰學編程

JavaScript 函數對參數的值沒有進行任何的檢查。

函數顯式參數(Parameters)與隱式參數(Arguments)

在先前的教程中,我們已經學習了函數的顯式參數:

functionName(parameter1, parameter2, parameter3) {

  // 要執行的代碼……

}

函數顯式參數在函數定義時列出。

函數隱式參數在函數調用時傳遞給函數真正的值。

參數規則

JavaScript 函數定義顯式參數時沒有指定數據類型。

JavaScript 函數對隱式參數沒有進行類型檢測。

JavaScript 函數對隱式參數的個數沒有進行檢測。

默認參數

ES5 中如果函數在調用時未提供隱式參數,參數會默認設置為: undefined

有時這是可以接受的,但是建議最好為參數設置一個默認值:

function myFunction(x, y) { if (y === undefined) { y = 0; } }

點擊下方「閱讀原文」可親試效果

或者,更簡單的方式:

function myFunction(x, y) { y = y || 0; }

點擊下方「閱讀原文」可親試效果

如果y已經定義 , y || 返回 y, 因為 y 是 true, 否則返回 0, 因為 undefined 為 false。

如果函數調用時設置了過多的參數,參數將無法被引用,因為無法找到對應的參數名。只能使用 arguments 對象來調用。

ES6 函數可以自帶參數

ES6 支持函數帶有默認參數,就判斷 undefined 和 || 的操作:

function myFunction(x, y = 10) {
// y is 10 if not passed or undefined
return x + y;
}

myFunction(0, 2) // 輸出 2
myFunction(5); // 輸出 15, y 參數的默認值

點擊下方「閱讀原文」可親試效果

arguments 對象

JavaScript 函數有個內置的對象 arguments。

argument 對象包含了函數調用的參數數組。

通過這種方式你可以很方便的找到最大的一個參數的值:

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
var i, max = arguments[0];

if(arguments.length < 2) return max;

for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}

點擊下方「閱讀原文」可親試效果

或者創建一個函數用來統計所有數值的和:

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
var i, sum = 0;
for (i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}

點擊下方「閱讀原文」可親試效果

通過值傳遞參數

在函數中調用的參數是函數的隱式參數。

JavaScript 隱式參數通過值來傳遞:函數僅僅只是獲取值。

如果函數修改參數的值,不會修改顯式參數的初始值(在函數外定義)。

隱式參數的改變在函數外是不可見的。

通過對象傳遞參數

在JavaScript中,可以引用對象的值。

因此我們在函數內部修改對象的屬性就會修改其初始的值。

修改對象屬性可作用於函數外部(全局變量)。

修改對象屬性在函數外是可見的。

長按二維碼關注公眾號,查閱更多教程

相關焦點

  • JavaScript 函數replace揭秘
    在JavaScript中replace函數作為字符串替換函數,它是一個具有強大威力的字符串操作函數,對於常見字符串操作的推薦用法。下面來幾個demo:"boy & girl".replace(/(\w+)\s*&\s*(\w+)/g,"$2 & $1") //girl & boy"boy".replace(/\w+/g,"$&-$&") // boy-boy"javascript".replace(/script/,"$& !
  • JavaScript 中 Eval 函數的前世今生,執行代碼字符串
    因此我們不能從外部訪問在 eval 中聲明的函數和變量:// 提示:本教程所有可運行的示例都默認啟用了嚴格模式 'use strict'eval("let x = 5; function f() {}");alert(typeof x); // undefined(沒有這個變量)// 函數 f 也不可從外部進行訪問
  • JavaScript 數組操作函數總結
    這裡總結到的 js 數組操作函數有:push,pop,join,shift,unshift,slice,splice,concat(1)push 和 pop這兩個函數都是對數組從尾部進行壓入或彈出操作。push(arg1,arg2,...)可以每次壓入一個或多個元素,並返回更新後的數組長度。
  • 走近 (javascript, 函數式)
    javascript 對函數式編程的支持在 javascript 中,函數是一等的,也就是說,在 javascript 中,函數本身也是一個值。例如一般函數聲明為:function someDo(params) {//balala}也可以寫成匿名函數的賦值:var someDo = function (params) {//balala }甚至函數也能作為函數的參數或者返回值,
  • JavaScript入門教程
    起源javascript前身叫做livescript,sun公司推出java,netspace公司引進java的概念,重新設計livescript,並更名javascript。發明者,布蘭登.艾克,表單驗證原先要經過伺服器,伺服器壓力大,等待時間長,js僅在客戶端就可完成。是什麼是一種腳本語言,是一種輕量級的程式語言。
  • 浪漫javascript程式設計師:用浪漫的方式教你模仿函數重載
    浪漫javascript程式設計師:用浪漫的方式教你模仿函數重載。浪漫是一種生活儀式,不分年齡,不分職業,不分地位。現在,且看程式設計師的浪漫模式。在javascript語言中,函數是沒有重載功能的。也就是說,在javascript函數中,無法通過識別參數的個數及數據類型調用有不同功能的同名函數。但是,程式設計師可以藉助javascript函數中的arguments對象的特性,模仿實現函數的重載,在一定程度上彌補了該程式語言中函數功能的不足。
  • javaScript入門—函數和document使用方法,新手必看!
    的alert的對話框,如果沒有檢查一下瀏覽器是否啟用了javascript。JavaScript中函數有什麼特點?函數是重複使用腳本的一種方式,可以重複多次成為可能,在javascript中函數不僅能多次運行而且還可以用來控制什麼時候執行引用腳本。
  • 【JavaScript】箭頭函數
    如果直接返回的值是一個對象,需要注意一下,寫法有所不同() => ({bar:1})另外還可以配合rest參數使用(header,...rest) => header // 返回第一個參數注意點&與普通函數的差異無this的強綁定箭頭函數無this的強綁定,一般在定義函數的時候確定而不是在執行函數的時候確定
  • JavaScript函數 - 事件驅動
    什麼是事件驅動函數? 最後給大家補充一個知識,叫做事件驅動函數,它到底是做什麼的呢?在頁面交互的過程中所調用的函數,該函數被稱之為事件驅動函數。現在先來簡單的了解一下,以後會詳細講到什麼是事件?和頁面交互的行為稱之為事件比如:滑鼠點擊某個按鈕時(onclick)、滑鼠浮動,或者滑鼠離開某一個區域(onmouseover、onmouseout)、文本框獲取焦點和失去焦點時(onfocus、onblur)等等如果我們想給一個按鈕綁定一個事件,就要通過事件驅動函數來綁定,並且通過id來找到它<script type = "text/javascript
  • JavaScript函數 - 遞歸
    什麼是函數遞歸?遞歸是指函數自己調用自己。注意:我們可以寫出遞歸,但是我們並不知道她如何得出結果。1.面試官如果問你遞歸的相關知識,面試官的水平還不錯。2.但是在工作中,一般情況下禁止使用遞歸。2.找這一次和上一次的關係3.假設當前的函數已經可以使用,調用自身計算上一次的運行結果,再寫出這次的運行結果特點:1.必須有參數2.必須由return返回值舉個小例子:計算1加到n的和分析:先來封裝一個函數為sun(n); 找出臨界值,如果n==1時,就直接return返回1
  • JavaScript日期函數 - 計時器、innerHTML
    (或匿名函數),毫秒數 ); 或者setInterval( function(){ } , 毫秒數 ); 只不過一個是寫了函數名,一個是直接定義了函數功能:每隔所傳參數的毫秒數,就調用一次所傳參數的函數返回值:當前頁面上對於這個定時器的唯一標識,定時器的ID有了定時器的ID我們就可以取消定時器,下面會講到舉個小例子:
  • 【JavaScript】Promise函數的用法
    javascript
  • javascript 定時器工作原理
    說到 javascript 中的定時器,我們肯定會想到 setTimeout() 和 setInterval() 這兩個函數。
  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascriptDate對象javascript String對象JavaScript常用於實現一些前端效果。
  • JavaScript alert()函數用法說明
    JavaScript alert()函數用法說明 你對JavaScript alert()函數的用法是否熟悉,這裡和大家分享一下,alert消息對話框通常用於一些對用戶的提示信息,例如在表單中輸入了錯誤的數據時。
  • javascript常用函數推薦
    繼續上一篇的內容,本文繼續javascript數組相關的常用函數推薦,基於ES6+規範,上一篇請查看這裡countOccurrences計算數組中值的出現次數。每次遇到數組內的特定值時,使用Array.prototype.reduce()遞增計數器。
  • 來一輪帶注釋的demo,徹底搞懂javascript中的replace函數
    javascript這門語言一直就像一位帶著面紗的美女,總是看不清,摸不透,一直專注伺服器端,也從來沒有特別重視過,直到最近幾年,javascript越來越重要,越來越通用。最近和前端走的比較近,藉此機會,好好鞏固一下相關知識點。
  • 12 個 GitHub 上超火的 JavaScript 奇技淫巧項目,找到寫 JavaScript 的靈感!
    , reduce, filter 等高階函數表達式和語句變量提升Promise立即執行函數, 模塊化, 命名空間遞歸算法數據結構消息隊列和事件循環setTimeout, setInterval 和 requestAnimationFrame繼承, 多態和代碼復用按位操作符, 類數組對象和類型化數組DOM
  • 最強大、最牛逼的javascript視頻免費發布啦
    是一門非常強大的腳本語言,應用的範圍非常廣泛,每一個web開發者學好javascript也是必須的,本套視頻教程詳細的講解了javascript各個知識點、關鍵點,其中涉及到高深的函數概念、原型概念、接口概念、單體概念、更是詳細的講解了javascript設計模式。 本
  • Javascript 生成器
    在 javascript 中,如果想要使用生成器,則需要: 定義特殊的生成器函數 調用該函數創建一個生成器對象 在循環中使用該生成器對象,或直接調用其 方法 我們以下面這個簡單的程序做為起點,並執行以下每個步驟: