關鍵字function用來定義函數。
//函數宣告式定義:
function funcname([arg1[,args[...,argn]]]){
statements
}
//函數表達式定義:
var funcname = function ([arg1[,args[...,argn]]]){
statements
};
注意,function語句裡的花括號是必要的,即使函數體只包含一條語句。
在JavaScript中,函數是Function類別的具體實例。而且都與其它引用型別一樣具有屬性和方法。
函數名稱實際上是指向函數物件的指針,函數可以作為參數參與傳參和返回值。
函數的物件特性
因為函數是Function的實例,而函數名稱只是該實例的一個引用位址。因此可以作為參數和返回值參與到函數的傳參過程中。
function call_some_function(some_function, some_argument) {
return some_function(some_argument);
}
function add_10(num) {
return num 10;
}
console.log(call_some_function(add_10,20)); //30
函數的內部屬性
arguments | this
•arguments物件中保存著傳遞給函數的參數
•arguments.length傳回傳入參數的個數
•Note: length屬性表示函數定義時候預設接收的參數數量。 arguments.length表示函數實際執行時接收的參數數量。
function test_arguments() {
if (arguments.length == 2) {
console.log(arguments.length);
console.log(arguments);
} else {
console.log(arguments.length);
console.log(arguments);
arguments.callee(4, 5);
};
}(1, 2, 3)
/**
3
{ '0': 1, '1': 2, '2': 3 }
2
{ '0': 4, '1': 5 }
**/
•arguments.callee()主要用在遞歸函數中呼叫函數本身的情境。 js和別的語言不同在於函數名稱只是一個指針,可以隨時變化,函數中利用函數名稱來調用自身屬於高耦合,可能會出現問題,而arguments.callee()調用自身就會規避掉這個問題
function factorial(num) {
if (num return 1;
} else {
return num * factorial(num - 1);
};
}
function callee_f(num) {
if (num return 1;
} else {
return num * arguments.callee(num - 1);
};
}
factorial(10); //運作正常
f = factorial;
factorial = null;
f(10); //error
callee_f(10); //運作正常
f = callee_f;
callee_f = null;
f(10); //運作正常
•this主要用來幫助函數引用函數所處作用域中的物件。
var color = 'red';
function syaColor() {
console.log(this.color);
}
syaColor(); //red
var o = new Object();
o.color = 'blue';
o.sayColor = sayColor;
o.sayColor(); //blue
call()和apply()
call()和apply()是每個函數都包含的自有方法。之前已經提到了函數是定義的對象,那麼呼叫函數時候,函數中的this是對目前與下變數的呼叫。而如果想要改變函數執行所在域空間,則可以使用call()和apply()來實作。
color = 'red';
var o = {color: 'blue'};
function sayColor() {
console.log(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(o); //blue
app()和call()的作用是相同的,差異主要在於傳入參數的差異。
call(this,para1,prar2,prar3) 第一個參數是函數要執行的作用域,後面的參數是函數的輸入參數,有多少個依序寫幾個。
apply(this,[para1,para2,prara3])第一個參數也是函數要執行的作用域,後面是一個Array的陣列物件。
使用call()/apply()來擴充作用域最大的好處是物件和方法的解耦。
內建物件
Global對象可以理解成最外層的對象,所有的對象,以及不屬於其它對象的屬性和方法都被包含在Global對像中。
* isNaN(x) 用來檢查參數x是否為數字。如果為數字回傳false,否則回傳true
* isFinite(x) 用來檢查參數x是否為無限大/小,如果是無限大/小,則回傳true
* parseInt(x) 用來解析字串並傳回整數
* parseFloat(x) 用來解析字串並傳回浮點數
* encodeURI()和encodeURIComponent()會對字串進行特殊的UTF-8編碼,規避一些特殊字元來讓瀏覽器能夠讀懂。他兩人的差異主要在於encodeURI()不會對本身屬於URI的特殊字元進行編碼,而encodeURIComponent()會對其發現的所有非標準字元進行編碼。
var uri = "http://www.wrox.com/illegal value.htm#start";
//http://www.wrox.com/illegal value.htm#start
console.log(encodeURI(uri))
//http://www.wrox.com/illegal value.htm#start
console.log(encodeURIComponent(uri))
•對應的解碼函數為decodeURI()和decodeURIComponent()
•eval(script) 用來將script的內容在解譯器中執行並傳回對應的結果。非常強大!
Note:在瀏覽器中,windows物件封裝了Global對象,並承擔了許多額外的任務和功能。
Math物件為另一個內建物件。為JavaScript提供了數學計算功能。
以上就是本文的全部內容了,希望朋友們能夠喜歡,能夠對大家有所幫助。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

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