JavaScript 函式語法
函式就是包裹在花括號中的程式碼塊,前面使用了關鍵詞 function:
function functionname()
{
這裡是要執行的程式碼
}
當呼叫該函式時,會執行函式內的程式碼。
可以在某事件發生時直接呼叫函式(比如當使用者點選按鈕時),並且可由 JavaScript 在任何位置進行呼叫。
提示:JavaScript 對大小寫敏感。關鍵詞 function 必須是小寫的,並且必須以與函式名稱相同的大小寫來呼叫函式。
呼叫帶引數的函式
在呼叫函式時,您可以向其傳遞值,這些值被稱為引數。
這些引數可以在函式中使用。
您可以傳送任意多的引數,由逗號 (,) 分隔:
myFunction(argument1,argument2)
當您宣告函式時,請把引數作為變數來宣告:
function myFunction(var1,var2)
{
這裡是要執行的程式碼
}
變數和引數必須以一致的順序出現。第一個變數就是第一個被傳遞的引數的給定的值,以此類推。
例項
<button onclick="myFunction('Bill Gates','CEO')">點選這裡</button>
<script>
function myFunction(name,job)
{
alert("Welcome " + name + ", the " + job);
}
</script>
上面的函式會當按鈕被點選時提示 “Welcome Bill Gates, the CEO”。
帶有返回值的函式
有時,我們會希望函式將值返回撥用它的地方。
通過使用 return 語句就可以實現。
在使用 return 語句時,函式會停止執行,並返回指定的值。
語法
function myFunction()
{
var x=5;
return x;
}
上面的函式會返回值 5。
註釋:整個 JavaScript 並不會停止執行,僅僅是函式。JavaScript 將繼續執行程式碼,從呼叫函式的地方。
函式呼叫將被返回值取代:
var myVar=myFunction();
myVar 變數的值是 5,也就是函式 “myFunction()” 所返回的值。
即使不把它儲存為變數,您也可以使用返回值:
document.getElementById("demo").innerHTML=myFunction();
“demo” 元素的 innerHTML 將成為 5,也就是函式 “myFunction()” 所返回的值。
您可以使返回值基於傳遞到函式中的引數:
例項
計算兩個數字的乘積,並返回結果:
function myFunction(a,b)
{
return a*b;
}
document.getElementById("demo").innerHTML=myFunction(4,3);
“demo” 元素的 innerHTML 將是:
12
在您僅僅希望退出函式時 ,也可使用 return 語句。返回值是可選的:
function myFunction(a,b)
{
if (a>b)
{
return;
}
x=a+b
}
如果 a 大於 b,則上面的程式碼將退出函式,並不會計算 a 和 b 的總和。
區域性 JavaScript 變數
在 JavaScript 函式內部宣告的變數(使用 var)是區域性變數,所以只能在函式內部訪問它。(該變數的作用域是區域性的)。
您可以在不同的函式中使用名稱相同的區域性變數,因為只有宣告過該變數的函式才能識別出該變數。
只要函式執行完畢,本地變數就會被刪除。
全域性 JavaScript 變數
在函式外宣告的變數是全域性變數,網頁上的所有指令碼和函式都能訪問它。
JavaScript 變數的生存期
JavaScript 變數的生命期從它們被宣告的時間開始。
區域性變數會在函式執行以後被刪除。
全域性變數會在頁面關閉後被刪除。
向未宣告的 JavaScript 變數來分配值
如果您把值賦給尚未宣告的變數,該變數將被自動作為全域性變數宣告。
這條語句:
carname=“Volvo”;
將宣告一個全域性變數 carname,即使它在函式內執行。
匿名函式
概念:
匿名函式指的是沒有函式名稱的函式。
作用:可以有效的避免全域性變數的汙染以及函式名的衝突問題。
說明:既是函式表示式的另一種表示形式,又可通過函式宣告的方式實現呼叫
省略函式名
var fn = function (num1, num2) {
return num1 + num2;
};
fn(1, 2)
自呼叫
(function (num1, num2) {
return num1 + num2;})(1, 2);
處理事件
document.body.onclick = function () {
alert('Hi, everybody!');
};
自呼叫方式也稱為立即執行函式,此函式只能是函式表示式,不能是函式宣告。
它的作用是:建立一個獨立的作用域,避免被同名變數覆蓋。
var car = (function() {
var speed = 0;
return {start: function() {
speed = 60;},getSpeed: function() {
return speed;
}
}
})();
car.start();
console.log(car.getSpeed());
回撥函式
概念:回撥函式指的是一個函式A作為引數傳遞給一個函式B,然後在B的函式體內呼叫函式A。函式A稱為回撥函式。
提示:匿名函式常用作函式的引數傳遞,實現回撥函式。
應用:函式體中某部分功能由呼叫者決定,此時可以使用回撥函式。
在JavaScript中還為陣列提供了很多利用回撥函式實現具體功能的方法
巢狀函式
概念:在一個函式內部存在另一個函式的宣告
特點:內層函式只能在外層函式作用域內執行,在內層函式執行的過程中,若需要引入某個變數,首先會在當前作用域中尋找,若未找到,則繼續向上一層級的作用域中尋找,直到全域性作用域,我們稱這種鏈式的查詢關係為作用域鏈.
var iBaseNum= 10;
function addNum(iNum1, iNum2) {
function doAdd() {
return iNum1 + iNum2 + iBaseNum;
}
return doAdd();
}
閉包函式
在JavaScript中,內嵌函式可以訪問定義在外層函式中的所有變數和函式,幷包括其外層函式能訪問的所有變數和函式。但是在函式外部則不能訪問函式的內部變數和巢狀函式。此時就可以使用"閉包"來實現。
所謂"閉包"指的是有權訪問另一函式作用域內變數(區域性變數)的函式,也就是閉包由函式以及建立該函式的詞法環境組合而成。
它最主要的用途是以下兩點:
可以在函式外部讀取函式內部的變數。
可以讓變數的值始終保持在記憶體中。
常見建立方式:就是在一個函式內部建立另一個函式,通過另一個函式訪問這個函式的區域性變數
function fn() {
var times = 0;
var c = function () {
return ++times;
};
return c;
}
var count = fn(); // count是一個閉包
// 訪問測試
console.log(count())
;console.log(count());
console.log(count());
console.log(count());
console.log(count());
用閉包模擬私有方法,提供類似物件導向的資料隱藏和封裝。
相關文章
- 【函式】Oracle TRIM函式語法介紹函式Oracle
- MySQL 函式語法整理MySql函式
- Generator函式語法解析函式
- gin框架函式語法框架函式
- 函式式JavaScript(2):如何打造“函式式”程式語言?函式JavaScript
- scala語法 - 方法與函式函式
- mysql函式定義語法MySql函式
- 【轉】分析函式語法解析函式
- ES6語法(二) 函式函式
- Python 函式 類 語法糖Python函式
- 瞭解 JavaScript 函數語言程式設計 - 宣告式函式JavaScript函數程式設計函式
- PHP 7.4 新語法:箭頭函式PHP函式
- python 基礎語法 - 函式(一)Python函式
- 語法:OVER(PARTITION BY)及開窗函式函式
- JavaScript語法JavaScript
- JavaScript的流程控制語句以及函式JavaScript函式
- javascript return語句只能用於函式中JavaScript函式
- javaScript函式JavaScript函式
- javascript中正規表示式的基礎語法JavaScript
- Dart語法篇之函式的使用(四)Dart函式
- JavaScript函數語言程式設計(純函式、柯里化以及組合函式)JavaScript函數程式設計函式
- [翻譯] JavaScript函式的6個基本術語JavaScript函式
- 一起來啃《JavaScript語言精粹》----函式JavaScript函式
- javascript基本語法JavaScript
- 【轉】eval()函式(javascript) - [javaScript]函式JavaScript
- 函式式JavaScript(4):函式柯里化函式JavaScript
- JavaScript Generator 函式JavaScript函式
- JavaScript 匿名函式JavaScript函式
- JavaScript function 函式JavaScriptFunction函式
- javascript函式(5)JavaScript函式
- JavaScript睡眠函式JavaScript函式
- JavaScript匿名函式JavaScript函式
- JavaScript 偏函式JavaScript函式
- JavaScript 函式(轉)JavaScript函式
- Python語法—函式及引數傳遞Python函式
- javascript-函式表示式JavaScript函式
- 函式式JavaScript(1):引言函式JavaScript
- 函式式 JavaScript 簡介函式JavaScript