最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解JavaScript的函數(shù)簡介

 更新時間:2021年11月17日 11:43:16   作者:1900''''''''''''''''s 88 keys  
這篇文章主要為大家介紹了JavaScript的函數(shù)簡介,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

函數(shù)簡介

函數(shù)function

  • 函數(shù)也是一個對象
  • 函數(shù)是實現(xiàn)功能的n條語句的封裝體,需要的時候就可以隨時調用
  • 函數(shù)可以執(zhí)行的,其他類型的數(shù)據(jù)不能執(zhí)行
  • 使用typeof檢查一個函數(shù)對象時,會返回function

優(yōu)點:

  • 提高代碼的復用
  • 便于閱讀交流

創(chuàng)建函數(shù)

構造函數(shù)創(chuàng)建函數(shù)

語法

var fun =new Function(代碼塊);

這種形式構建函數(shù)的比較少。

函數(shù)聲明創(chuàng)建函數(shù)

語法:

function 函數(shù)名(形參1,形參2......形參N){
    語句...
}

函數(shù)表達式創(chuàng)建函數(shù)

var 函數(shù)名 = function 函數(shù)名(形參1,形參2......形參N){
    語句...
}

函數(shù)的參數(shù)

形參(形式參數(shù)):

  • 在函數(shù)中的()中指定一個或多個形參
  • 多個形參之間使用,隔開,聲明形參就相當于在函數(shù)內(nèi)部聲明了對應的變量,但是并不賦值

實參(實際參數(shù)):

  • 在調用函數(shù)時,可以在()中指定實參
  • 實參將會賦值給函數(shù)中相應的形參
  • 調用函數(shù)時,解析器不會檢查實參的類型(所以要注意,是否有可能會接受到非法的參數(shù),如果有可能則需要對參數(shù)進行類型檢查)
function sum(a, b) {
    console.log(a + b);
}
sum(1, 2);//調用函數(shù),傳入實參

在這里插入圖片描述

參數(shù)的數(shù)量:

  • 函數(shù)的實參和形參的個數(shù)可以不同
  • A、實參的個數(shù)多于形參的個數(shù):函數(shù)正常運行,多余的實參被忽略
  • B、實參的個數(shù)少于形參的個數(shù): 多余的形參會變成undefined的變量

問題: 在JavaScript中調用函數(shù)時傳遞變量參數(shù)時,是值傳遞還是引用傳遞?

  • 理解1:都是值(基本/地址值)傳遞
  • 理解2:可能是指傳遞,也可能是引用傳遞(地址值)
var a = 3;
function fn(a) {
    a = a + 1;
}
fn(a);
console.log("a為:", a);// 3

在這里插入圖片描述

在這里就可以理解為是值(基本)傳遞

var obj = { name: "心猿" };//聲明一個對象
function fn(obj) {
    console.log(obj.name);
}
fn(obj);//“心猿”
//這里可以理解為地址值傳遞,也可以理解為引用傳遞(地址值)

在這里插入圖片描述

函數(shù)的調用

直接調用:

函數(shù)名()

function fn(obj) {
    console.log("我是直接被調用的!");
}
fn()//直接調用

在這里插入圖片描述

通過對象調用

obj.函數(shù)名()

Obj = {
    fun(){
        console.log("我是通過對象調用的!");
    }
}
Obj.fun();//通過對象調用函數(shù)

在這里插入圖片描述

new調用

new fun()

function fun() {
    console.log("我是通過new調用的!");
    return 1 + 2;//返回一個值
}
var result = new fun();
console.log("result:", result);//fun {}
console.log("result的數(shù)據(jù)類型:",typeof result);//"object"

在這里插入圖片描述

注意:

1、用new調用的函數(shù),得到的永遠是一個對象,不管函數(shù)有沒有返回值

2、使用new調用函數(shù),這個函數(shù)就是一個用來創(chuàng)建對象的函數(shù)(構造函數(shù))

fun.call/apply(obj)調用

這個是臨時讓fun成為obj的方法進行調用

var obj = { name: "心猿" };//聲明一個對象
function fun() {
    this.age = 5000;
    console.log("通過fun.call(obj)調用函數(shù)!");
}
//不能直接通過obj.fun()調用,但是可以通過fun.call(obj)進行調用
fun.call(obj)//相當于obj.fun
//打印通過fun.call(obj)調用函數(shù)!
console.log("還可以當做obj的方法調用age的信息  "+"age:",obj.age);//5000

在這里插入圖片描述

函數(shù)的返回值

函數(shù)可以有返回值,也可以沒有返回值。

  • 有返回值的函數(shù):函數(shù)體中通過return語法返回一個值,這個決定程序下一步操作
  • 無返回值的函數(shù):函數(shù)只實現(xiàn)某種功能,不需要返回值(函數(shù)體中沒有return語句)
  • 返回值可以是任意數(shù)據(jù)類型,可以是基本數(shù)據(jù)類型,也可以是對象和函數(shù)。

立即執(zhí)行函數(shù)

函數(shù)定義完,立即被調用,這種函數(shù)叫做立即執(zhí)行函數(shù)

立即執(zhí)行函數(shù)往往只會執(zhí)行一次。

語法:

(function(){
	代碼塊;
})();

例如:

(function (a, b) {
    console.log("num:", a + b);
})(1,3);//4

在這里插入圖片描述

方法

  • 對象中屬性可以是一個函數(shù)
  • 如果一個函數(shù)作為一個對象的屬性保存。那么我們稱這個函數(shù)是這個對象的方法
  • 調用這個函數(shù)就是調用對象的方法(method),本質上和函數(shù)沒有區(qū)別
var obj = new Object()
{
    obj.name = "心猿";
    obj.age = 3000;
    obj.sayName = function(){
        console.log("name:",obj.name);
    }
}
obj.sayName();

在這里插入圖片描述

另一種寫法:

var obj = {
    name: "意馬",
    age: 3000,
    sayName: function () {
        console.log("name:", obj.name);
    }
}
obj.sayName();

在這里插入圖片描述

枚舉對象中的屬性:

可以看我這篇的不同方法遍歷的區(qū)別:比較JavaScript中for、forEach、for…in、for…of的區(qū)別

使用for...in語句

語法

for(var index in arr)
{
    console.log(index);//代碼塊
}

for ...in語句 對象有幾個屬性,循環(huán)體就會執(zhí)行幾次,每次執(zhí)行時,會將對象中的一個屬性的名字賦值給變量

在這里插入圖片描述

var person = {
    name:"孫悟空",
    age:5777,
    gender:"男"
};
for(var index in person)
{
    console.log(person[index]);
}

作用域

作用域指一個變量的作用范圍

在JavaScript中一共兩種作用域:

1.全局作用域(全局變量)

2.函數(shù)作用域(局部變量)

3.塊級作用域ES6語法

全局作用域

  • 在函數(shù)外部定義的變量或在函數(shù)內(nèi)部沒有使用var聲明的變量。
  • 全局作用域在瀏覽器頁面打開時創(chuàng)建,在頁面關閉是銷毀
  • 在全局作用域中有一個全局對象window
  • 它代表的是一個瀏覽器的窗口
  • 它代表的是一個瀏覽器的窗口,它由瀏覽器創(chuàng)建我們可以直接使用
  • 如果在node.js環(huán)境下使用這個全局對象window會報錯,需要在瀏覽器中才會有顯示結果。
  • 在全局作用域中:
    • 創(chuàng)建的變量都會作為window對象的屬性保存
    • 創(chuàng)建的函數(shù)都會作為window對象的方法保存
  • 全局作用域中的變量都是全局變量
  • 在頁面任意的部分都可以訪問的到

變量作為window對象的屬性保存

var  a = 10;
console.log("a:",a);
console.log("window.a:",window.a);

因為環(huán)境的原因在node.js下會報錯

在這里插入圖片描述

在瀏覽器中會正常顯示

在這里插入圖片描述

函數(shù)都會作為window對象的方法

function fun(){
   console.log("我是window.fun函數(shù)!")
}
window.fun();

在這里插入圖片描述

函數(shù)作用域

  • 調用函數(shù)時創(chuàng)建函數(shù)作用域,函數(shù)執(zhí)行完畢以后,函數(shù)作用域銷毀
  • 每調用一次函數(shù)就會創(chuàng)建一個新的函數(shù)作用域,他們之間是互相獨立的
  • 在函數(shù)作用域中可以訪問到全局作用域的變量
  • 當函數(shù)作用域操作一個變量時,會現(xiàn)在自身作用域中尋找,如果有就直接使用,如果全局作用域中依然沒有找到,則會報錯ReferennceError
  • 在函數(shù)中要訪問全局變量可以使用window對象

塊級作用域

ES6(ECMAScript 2016)使用let聲明的變量,作用范圍在語句塊中

for(let i=0;i<100;i++){
			}

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • 基于小程序請求接口wx.request封裝的類axios請求

    基于小程序請求接口wx.request封裝的類axios請求

    這篇文章主要介紹了基于小程序請求接口wx.request封裝的類axios請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 網(wǎng)頁中的圖片查看器viewjs使用方法

    網(wǎng)頁中的圖片查看器viewjs使用方法

    下面小編就為大家?guī)硪黄W(wǎng)頁中的圖片查看器viewjs使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • javascript+css實現(xiàn)進度條效果

    javascript+css實現(xiàn)進度條效果

    這篇文章主要為大家詳細介紹了javascript+css實現(xiàn)進度條效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 原生JS實現(xiàn)拖拽位置預覽

    原生JS實現(xiàn)拖拽位置預覽

    這篇文章主要為大家詳細介紹了原生JS實現(xiàn)拖拽位置預覽,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • js Map List 遍歷使用示例

    js Map List 遍歷使用示例

    在知道的key的情況下遍歷map自然就跟數(shù)組一樣的訪問羅,這里就不說了,示例如下,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-07
  • 純JavaScript實現(xiàn)的分頁插件實例

    純JavaScript實現(xiàn)的分頁插件實例

    這篇文章主要介紹了純JavaScript實現(xiàn)的分頁插件,涉及javascript結合php動態(tài)實現(xiàn)分頁效果的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • js代碼實現(xiàn)無縫滾動(文字和圖片)

    js代碼實現(xiàn)無縫滾動(文字和圖片)

    js無縫滾動,圖片無縫滾動,文字無縫滾動,基于js代碼如何實現(xiàn),本篇文章給大家詳解js代碼實現(xiàn)無縫滾動(文字和圖片),需要的朋友可以參考下
    2015-08-08
  • js實現(xiàn)從右往左勻速顯示圖片(無縫輪播)

    js實現(xiàn)從右往左勻速顯示圖片(無縫輪播)

    這篇文章主要為大家詳細介紹了js實現(xiàn)從右往左勻速顯示圖片,無縫輪播,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • canvas壓縮圖片轉換成base64格式輸出文件流

    canvas壓縮圖片轉換成base64格式輸出文件流

    本文主要介紹了canvas壓縮圖片轉換成base64格式輸出文件流的方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • JS生態(tài)系統(tǒng)加速探索Draft-js?emoji插件功能及使用探索

    JS生態(tài)系統(tǒng)加速探索Draft-js?emoji插件功能及使用探索

    這篇文章主要介紹了JS生態(tài)系統(tǒng)加速探索Draft-js?emoji插件功能使用探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論

自贡市| 无为县| 准格尔旗| 抚宁县| 五华县| 濮阳市| 田林县| 重庆市| 沙坪坝区| 资中县| 遂昌县| 鄂托克前旗| 宜阳县| 宁陵县| 东港市| 南京市| 资中县| 栖霞市| 岐山县| 玉山县| 九寨沟县| 屏南县| 陇西县| 枝江市| 嘉黎县| 温泉县| 政和县| 云南省| 海原县| 乌鲁木齐县| 营山县| 曲松县| 沐川县| 鄂州市| 平顶山市| 于田县| 柞水县| 宁武县| 丹东市| 禄劝| 岢岚县|