欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

函數(shù)簡(jiǎn)介

函數(shù)function

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

優(yōu)點(diǎn):

  • 提高代碼的復(fù)用
  • 便于閱讀交流

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

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

語(yǔ)法

var fun =new Function(代碼塊);

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

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

語(yǔ)法:

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

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

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

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

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

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

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

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

在這里插入圖片描述

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

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

問(wèn)題: 在JavaScript中調(diào)用函數(shù)時(shí)傳遞變量參數(shù)時(shí),是值傳遞還是引用傳遞?

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

在這里插入圖片描述

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

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

在這里插入圖片描述

函數(shù)的調(diào)用

直接調(diào)用:

函數(shù)名()

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

在這里插入圖片描述

通過(guò)對(duì)象調(diào)用

obj.函數(shù)名()

Obj = {
    fun(){
        console.log("我是通過(guò)對(duì)象調(diào)用的!");
    }
}
Obj.fun();//通過(guò)對(duì)象調(diào)用函數(shù)

在這里插入圖片描述

new調(diào)用

new fun()

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

在這里插入圖片描述

注意:

1、用new調(diào)用的函數(shù),得到的永遠(yuǎn)是一個(gè)對(duì)象,不管函數(shù)有沒(méi)有返回值

2、使用new調(diào)用函數(shù),這個(gè)函數(shù)就是一個(gè)用來(lái)創(chuàng)建對(duì)象的函數(shù)(構(gòu)造函數(shù))

fun.call/apply(obj)調(diào)用

這個(gè)是臨時(shí)讓fun成為obj的方法進(jìn)行調(diào)用

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

在這里插入圖片描述

函數(shù)的返回值

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

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

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

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

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

語(yǔ)法:

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

例如:

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

在這里插入圖片描述

方法

  • 對(duì)象中屬性可以是一個(gè)函數(shù)
  • 如果一個(gè)函數(shù)作為一個(gè)對(duì)象的屬性保存。那么我們稱這個(gè)函數(shù)是這個(gè)對(duì)象的方法
  • 調(diào)用這個(gè)函數(shù)就是調(diào)用對(duì)象的方法(method),本質(zhì)上和函數(shù)沒(méi)有區(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();

在這里插入圖片描述

枚舉對(duì)象中的屬性:

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

使用for...in語(yǔ)句

語(yǔ)法

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

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

在這里插入圖片描述

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

作用域

作用域指一個(gè)變量的作用范圍

在JavaScript中一共兩種作用域:

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

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

3.塊級(jí)作用域ES6語(yǔ)法

全局作用域

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

變量作為window對(duì)象的屬性保存

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

因?yàn)榄h(huán)境的原因在node.js下會(huì)報(bào)錯(cuò)

在這里插入圖片描述

在瀏覽器中會(huì)正常顯示

在這里插入圖片描述

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

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

在這里插入圖片描述

函數(shù)作用域

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

塊級(jí)作用域

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

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

總結(jié)

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

相關(guān)文章

  • GoJs基本使用示例詳解

    GoJs基本使用示例詳解

    這篇文章主要為大家介紹了GoJs基本使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 利用js實(shí)現(xiàn)遮罩以及彈出可移動(dòng)登錄窗口

    利用js實(shí)現(xiàn)遮罩以及彈出可移動(dòng)登錄窗口

    本篇文章是對(duì)使用js實(shí)現(xiàn)遮罩以及彈出可移動(dòng)登錄窗口的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • JS實(shí)現(xiàn)的表格行上下移動(dòng)操作示例

    JS實(shí)現(xiàn)的表格行上下移動(dòng)操作示例

    這篇文章主要介紹了JS實(shí)現(xiàn)的表格行上下移動(dòng)操作,涉及javascript針對(duì)頁(yè)面元素節(jié)點(diǎn)與屬性的相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • js+css實(shí)現(xiàn)卡片輪播圖效果

    js+css實(shí)現(xiàn)卡片輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了js+css實(shí)現(xiàn)卡片輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Es6 Generator函數(shù)詳細(xì)解析

    Es6 Generator函數(shù)詳細(xì)解析

    Generator 函數(shù)是 ES6 提供的一種異步編程解決方案,語(yǔ)法行為與傳統(tǒng)函數(shù)完全不同。這篇文章給大家介紹Es6 Generator函數(shù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2018-02-02
  • 簡(jiǎn)單了解JavaScript中的執(zhí)行上下文和堆棧

    簡(jiǎn)單了解JavaScript中的執(zhí)行上下文和堆棧

    這篇文章主要介紹了簡(jiǎn)單了解JavaScript中的執(zhí)行上下文和堆棧,你應(yīng)該對(duì)解釋器了解得更清楚:為什么在聲明它們之前可以使用某些函數(shù)或變量?以及它們的值是如何確定的?,需要的朋友可以參考下
    2019-06-06
  • JS實(shí)現(xiàn)圖文并茂的tab選項(xiàng)卡效果示例【附demo源碼下載】

    JS實(shí)現(xiàn)圖文并茂的tab選項(xiàng)卡效果示例【附demo源碼下載】

    這篇文章主要介紹了JS實(shí)現(xiàn)圖文并茂的tab選項(xiàng)卡效果,涉及javascript響應(yīng)鼠標(biāo)事件動(dòng)態(tài)修改頁(yè)面元素屬性的相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-09-09
  • 微信小程序picker多列選擇器(mode = multiSelector)

    微信小程序picker多列選擇器(mode = multiSelector)

    本文主要介紹了微信小程序picker多列選擇器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • javascript 多種搜索引擎集成的頁(yè)面實(shí)現(xiàn)代碼

    javascript 多種搜索引擎集成的頁(yè)面實(shí)現(xiàn)代碼

    這個(gè)頁(yè)面是為了方便自己同時(shí)使用多種搜索引擎(呵呵我用其作默認(rèn)主頁(yè)),在IE5/IE6/FireFox下均運(yùn)行正常,效果如下圖
    2010-01-01
  • JS 對(duì)輸入框進(jìn)行限制(常用的都有)

    JS 對(duì)輸入框進(jìn)行限制(常用的都有)

    本文為大家介紹下使用js對(duì)輸入框進(jìn)行限制:文本框只能輸入數(shù)字代碼、只能輸入數(shù)字、只能輸入字母和漢字、只能輸入英文字母和數(shù)字等等,還有很多,感興趣的可以學(xué)習(xí)下
    2013-07-07

最新評(píng)論