j s函式詳解(2)

2021-09-25 16:15:40 字數 2054 閱讀 2540

函式宣告

function fn ()

被宣告的函式不會直接執行,他們被儲存供稍後使用,被呼叫時執行

函式表示式

var x = function (a, b)

在變數中儲存函式表示式後,此變數可用作函式

var x = function (a, b)

var z = x(2, 3)

這個函式實際上是乙個匿名函式,沒有函式名稱的函式,存放在變數中的函式不需要函式名,他們總是使用變數名呼叫

function()構造器函式提公升

提公升是js將宣告移動到當前作用域頂端的預設行為,

提公升應用於變數宣告和函式宣告

正因如此,js函式宣告能夠在宣告之前被呼叫,使用表示式定義的函式不會被提公升

自呼叫函式

函式表示式可稱為自呼叫,自呼叫表示式是自動被呼叫的開始的,再不進行呼叫的情況下,函式表示式會自動執行,後面表示式跟著(),無法對函式宣告進行自呼叫,需要在函式周圍新增括號,提示它是乙個函式表示式,實際上是乙個匿名的自呼叫函式(沒有名稱的函式)

(function (a) )(8)
函式可用作值

function myfunction(a, b) 

var x = myfunction(4, 3) * 2;

函式是物件

js 中typeof運算子會為函式返回function, 但是最好把js描述為物件,js函式都有屬性和方法,

arguments.length會返回函式被呼叫時收到的引數數目

tostring()方法以字串返回函式

function myfunction(a, b) 

var txt = myfunction.tostring();

返回function myfunction(a, b)

定義為物件屬性的函式,被稱為物件的方法,為建立新物件而設計的函式,被稱為物件建構函式

箭頭函式

箭頭函式允許使用簡短的語法來編寫函式表示式,你不需要用function關鍵字,return和{}

例如:

es5

var x = function (a, b)

console.log(x(2, 3))

es6const x = (x, y) => x * y

箭頭函式沒有自己的this,他們不適合定義物件方法,

箭頭函式未被提公升,他們必須在使用前提公升

使用const比使用var 更安全,因為函式表示式始終是常量值

如果函式是單個語句,則只能省略return關鍵字和 {},因此,保留他們可能是乙個好習慣

const x = (a ,b) =>

ie11或更早的版本不支援箭頭函式

函式引數

函式引數指的是傳遞到函式或由函式接受到的真實值,函式引數指的是在函式定義中列出的名稱

如果呼叫引數時省略了引數少於被宣告的數量,則丟失的值為undefined,如果函式呼叫的引數過多,則可以使用arguments物件來達到這些引數

使用 arguments物件尋找最大值

var arr = [1, 100, 3, 4, 5, 6, 7]

function findmax () else

return max}}

console.log(findmax(1, 100, 3, 4, 5, 6, 7))

//尋找陣列中最小值

function findmin() else

myfunction(10, 2); // 將返回 20

window.myfunction(10, 2); // 也會返回 20

這是呼叫函式的常見方法,但並不是乙個好習慣。

全域性變數、方法或函式很容易在全域性物件中產生命名衝突和漏洞。

JS函式詳解

對於js來說,我們可以把函式理解為任意一段 放在乙個盒子裡,在我們想要讓這段 執行的時候,直接執行這個盒子裡的 就行。專業一點來講 js函式就是由事件驅動的可執行課重複只用的 塊。宣告式function fn 這個function就宣告了乙個名為fn的函式 匿名函式 分為兩種情況 賦值式的原理和我們...

js函式詳解

函式 概述 函式的宣告 函式的重複宣告 圓括號運算子,return語句和遞迴 第一等公民 函式名的提公升 函式的屬性和方法 name屬性 length屬性 tostring 函式的作用域 定義 函式內部的變數提公升 函式本身的作用域 概述 函式的宣告 function命令,function命令宣告的...

js建構函式詳解

常用的建構函式 例如 function student name,age,score var pyq newstudent pyq 18 0 pyq.exam 我叫pyq今年18歲這次考了0分1 var pyq 建立了乙個繼承自 student.prototype 的新物件。2 pyq.proto ...