詳細解讀在js函數相關內容
這篇文章給大家簡單分析了JS中函數相關的重要知識點,對此有興趣的朋友可以參考學習下。
要知道,在js中,引用型別是一種資料結構,包含5種參考類型,分別是Object,data,Array,re請輸入代碼gExp,Function。今天我們就來說Function這種資料結構。
在js種函數其實是對象,每個函數都是Function類型的實例。和其他引用類型一樣,都具有屬性和方法。
1.函數定義有幾種方法
1)函數宣告語法定義
function sum(num1,num2){ return num1+num2; }
2)函數表達式
注意函數表達式後邊有一個分號;
var sum=function(num1,num2){ return num1+num2; }
使用Function 建構子
使用建構子可以接收任意數量的參數,但最後一個參數總是會被看成是函數體,而前面的參數則枚舉出了參數
var sum=new Function("num1","num2","return num1+num2")
當然第三種方法不友好,也不推薦。
函數名稱只是指向函數的指針,所以函數名稱與包含物件指標的其他變數沒有什麼不同。也就是說一個函數可能會有多個名字。
在這裡函數宣告和函數表達式有什麼差別呢?
解析器在向執行環境中載入資料的時候,對函數宣告和函數表達式是不一樣的。解析器首先會讀取函數聲明,並且使得這段函數聲明程式碼在任何程式碼之前都可呼叫。這就是我們平時所說的函數宣告提升。函數表達式不一樣,他必須等到函數解析器執行到他所在的程式碼區塊的時候,才會被真正的執行。比較下面2個例子
console.log(sum(10,10)); function sum(n1,n2){ return n1+n2; } 以上代码会正常执行 再看! console.log(sum(10,10)); var sum=function(n1,n2){ return n1+n2; } 以上执行器就会报错!
2.函數沒有重載
如果宣告了2個同名函數,結果是後面的函數覆寫了前面的函數。
function sun(a){ return a+100; } function sun(a){ return a+200; } var result=sum(2)//202
3.函數的內部屬性
包括this,arguments
具體不再敘述了
4 .函數的屬性與方法
函數有2個屬性,length和prototype
length表示函數希望接收命名參數的個數。
function a(name){ //todo } function b(name,age){ //todo } function c(){ //todo } a.length //1 b.length //2 c.length //0
prototype屬性對於引用型別來說很重要,會有專門講解,這裡不再這贅述。
每個函數都包含2個非繼承的方法apply,call
這兩個方法的用途都是在特定的作用域中呼叫函數,其實就是設定函數體內的this指代的值。
首先。 apply()方法接收2個參數,一個是函數運作的作用域,另一個是參數數組,第二個參數可以是數組的實例,也可以是arguments.
function sum(num1,num2){ return num1+num2; } function test1(a,b){ return sum.apply(this,arguments); } function test2(c,d){ return sum.apply(this.[c,d]); } console.log(test1(1,1)) //2 console.log(test2(1,1)) //2
call方法和apply方法沒有多大的差別。差別就是call方法的第二個參數必須要傳遞的參數一個個列舉出來。
使用call和apply來擴充作用域最大的好處就是物件不和任何方法耦合
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
在vue.js中如何取得select中的value值(詳細教學)
#以上是詳細解讀在js函數相關內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

怎麼更改MicrosoftEdge瀏覽器打開是360導航的頁面呢?其實很簡單,那麼現在小編就和大家一起分享關於更改MicrosoftEdge瀏覽器打開是360導航頁面的方法,有需要的朋友可以來看看哦,希望可以幫助大家。開啟MicrosoftEdge瀏覽器。我們看到是下圖這種頁面。點擊右上角的三點圖示。點選“設定”。在設定頁面的左側欄裡點選「啟動時」。點選右側欄裡的圖中示意的三點(不要能點選「開啟新標籤頁」),然後點選編輯,將網址改成「0」(或其他無意義的數字)。然後點選「儲存」。接下來,選擇“

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

CheatEngine是一款遊戲編輯器,能夠對遊戲的記憶體進行編輯修改。但是它的預設語言是非中文的,對於很多小夥伴來說比較不方便,那麼CheatEngine怎麼設定中文呢?今天小編就跟大家詳細介紹一下CheatEngine設定中文的方法,希望可以幫助到你。 設定方法一 1、雙擊開啟軟體,點選左上角的「edit」。 2、接著點選下方選項清單中的「settings」。 3、在開啟的視窗介面中,點選左側欄中的“languages”

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

大家知道MicrosoftEdge在哪設定顯示下載按鈕嗎?下文小編就帶來了MicrosoftEdge設定顯示下載按鈕的方法,希望對大家能夠有幫助,一起跟著小編來學習吧!第一步:先開啟MicrosoftEdge瀏覽器,點選右上角【...】標識,如下圖所示。步驟二:然後在彈出式選單中,點選【設定】,如下圖所示。第三步:接著點選介面左側【外觀】,如下圖所示。第四步:最後點選【顯示下載按鈕】右側按鈕,由灰變藍即可,如下圖所示。上面就是小編為大家帶來的MicrosoftEdge在哪設定顯示下載按鈕的
