js的function函數是什麼? js中function的用法
本篇文章帶給大家的內容是關於js的function函數是什麼? js中function的用法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
Function與函數
Function是JavaScript提供的一種參考類型,透過Function類型建立Function物件。
在JavaScript中,函數也是以物件的形式存在的,每個函數都是一個Function物件。
//字面量方式创建函数
var fun =function () {
console.log(100)
};
//函数声明方式创建函数
function fn () {
console.log(200)
};
/* 创建Funtion类型的对象
* var 函数名 = new Function('参数',''函数体)*/
var f = new Function('a','console.log(a)');
f(2);//以函数方式调用
Function類型
Function的apply()方法
Function的apply()方法用來呼叫函數,並且接受指定的this值,以及一個陣列作為參數。
//定义函数
function fun(value) {
console.log(value)
}
/*
函数的apply()方法——>用于调用一个函数
函数名.apply(thisArg,[argsArray])
thisArg——>可选项,函数运行时使用的this值
argsArray——>可选项,一个数组或者类数组对象,其中的元素作为单独的参数传给Function函数。*/
fun.apply(null,['100']);
Function的call()方法
Function的call()方法用來呼叫函數,並且接受指定的this值,以及參數清單。
var fun = function (value,a,b,) {
console.log(value,a,b,)
}
/*
* call()方法调用函数
* 函数名.call(thisArg,arg1,arg2,…)
*
* 和apply()的区别在于提供参数的方式不同
*/
fun.call(null,2,3,4);//2 3 4
Function的bind方法
Function用於創造一個新的函數,稱為綁定函數,並且接受指定的this值作為參數,以及參數列表
var fun = function (a,b,c) {
console.log( a,b,c)
}
/* bind方法->相当于复制一份当前函数
* 函数名.bind(thisArg,arg1,arg2,...)
* thisArg->当绑定函数被调用时,该属性作为原函数运行时的this指向
* arg->参数。当绑定函数被调用时,这些参数将在实参之前传递给被绑定的方法
* */
var v =fun.bind(null,2,3,4);
v();//2 3 4
沒有重載
在其他開發語言中,函數有一個特性叫做重載。就是定義多個同名的函數,但沒一個函數接收的參數個數不同,程式會根據呼叫時傳遞的實參數來判斷,具體呼叫的是哪個函數。
單JavaScript中函數是沒有重疊現象的,如果定義多個同名的函數,只有最後一個定義的函數是有效的。
arguments物件
雖然沒有重載,但JavaScript提供了argumengs物件可以模擬函數重載的現象。
/*
* argumengs对象
* *该对象存储当前函数中所有的参数(实参)->类数组对象
* *该对象一般用于函数中
* *作用-用于获取当前函数的所有参数
* *arguments.length->函数所有参数(实参)的个数*/
function fun() {
var num = arguments.length;
switch (num){
case 2://参数个数
return arguments[0]+arguments[1];
break;
case 3:
return arguments[0]+arguments[1]+arguments[2];
break;
}
}
console.log(fun(4,5));//9
console.log(fun(4,5,6));//15
遞歸
在函數體內呼叫自身的函數稱為遞迴函數。在某種意義上來說,遞歸近似於循環。兩者都重複執行相同的程式碼,都需要一個終止條件來避免無限迴圈和無限遞歸。
在一個函數體內,想要呼叫自身函數,有一下兩種方式
透過使用自身函數名稱實作
透過使用arguments物件的callee屬性來實作
/*//无线递归
function fun() {
console.log('23')
fun()//调用自身函数,实现递归
}
fun()*/
function fn(v) {
console.log(v);
if (v>=5){
return
}
/*fn(v+1)*///使用该方法终止递归当执行下列代码输出时,报错
arguments.callee(v+1)
}
/*fn(0)*/
var f = fn;
fn=null;
f(0);
特殊函數
匿名函數
在JavaScript中,當把函數當做數據使用時,可以不設定名字。匿名函數的兩種用法
可以將匿名函數當作參數傳給其他函數。
可以定一某個匿名函數執行某些一次性任務。
回呼函數
當一個函數作為另一個函數的參數時,作為參數的函數稱為回呼函數。
//作为另一个函数参数的函数fun->回调函数
var fun = function () {
return 2;
};
function fn(v) {
return v();
}
/*
var result=fn(fun);//函数fun作为函数fn的实参
console.log(result);
*/
//以上代码等同于以下代码
//以下代码中作为参数的函数->匿名回调函数
var f = fn(function(){return 2;});
console.log(f);
自調函數
自調函數就是在定義函數後自行呼叫
/* 自调函数->定义即调用的函数
* 相当于在匿名函数外加了小括号
* 第一对括号->定义函数
* 第二对括号->调用函数*/
(function () {
console.log('23')
})()//23->后边的括号表示调用
作為值的函數
一個函數作為另一個函數的結果進行返回,作為結果返回的函數稱為作為值的函數
var one = function(){
return 100;
}
// 作为值的函数 -> 内部函数的一种特殊用法
function fun(){
var v = 100;
// 内部函数
return function(){
return v;
};
}
var result = fun();
// console.log(result);// one函数
// console.log(result());// 100
console.log(fun()());
閉包
作用域鏈
#作用域鏈就是指局部作用域可以存取它的父級所能存取的作用域
var a = 10;// 全局变量
function fun(){
var b = 100;// fun函数作用域的局部变量
// 内部函数
function fn(){
var c = 200;// fn函数作用域的局部变量
// 内部函数
function f(){
var d = 300;// f函数作用域的布局变量
// 调用变量
console.log(a);// 10
console.log(b);// 100
console.log(c);// 200
console.log(d);// 300
}
f();
// 调用变量
// console.log(a);// 10
// console.log(b);// 100
// console.log(c);// 200
// console.log(d);// d is not defined
}
fn();
// 调用变量
// console.log(a);// 10
// console.log(b);// 100
// console.log(c);// c is not defined
// console.log(d);// d is not defined
}
fun();
#閉包
- 當內部任何一個函數被通過一種方式被任何一個外部作用域存取時,就是一個閉包。
var n;// 定义变量,但不初始化值 function fun(){// 函数作用域 var v = 100; // 进行初始化值 -> 一个函数 n = function(){ console.log(v); } // n(); } fun(); n();// 100閉包的作用 - 提供可享的局部變數
- 保護共享的局部變量,提專門讀寫入變數的函數
以上是js的function函數是什麼? js中function的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!
熱AI工具
Undress AI Tool
免費脫衣圖片
Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片
AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。
Clothoff.io
AI脫衣器
Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!
熱門文章
熱工具
記事本++7.3.1
好用且免費的程式碼編輯器
SublimeText3漢化版
中文版,非常好用
禪工作室 13.0.1
強大的PHP整合開發環境
Dreamweaver CS6
視覺化網頁開發工具
SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
WebSocket與JavaScript:實現即時監控系統的關鍵技術
Dec 17, 2023 pm 05:30 PM
WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技
如何使用WebSocket和JavaScript實現線上語音辨識系統
Dec 17, 2023 pm 02:54 PM
如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系
如何利用JavaScript和WebSocket實現即時線上點餐系統
Dec 17, 2023 pm 12:09 PM
如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單
JavaScript與WebSocket:打造高效率的即時天氣預報系統
Dec 17, 2023 pm 05:13 PM
JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We
如何使用WebSocket和JavaScript實現線上預約系統
Dec 17, 2023 am 09:39 AM
如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工
簡易JavaScript教學:取得HTTP狀態碼的方法
Jan 05, 2024 pm 06:08 PM
JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest
javascript如何使用insertBefore
Nov 24, 2023 am 11:56 AM
用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。
如何在JavaScript中取得HTTP狀態碼的簡單方法
Jan 05, 2024 pm 01:37 PM
JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務


