2023-01-03 調(diào)用函數(shù)

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

調(diào)用函數(shù)有五種方法

  • 1.函數(shù)調(diào)用:函數(shù)調(diào)用是調(diào)用函數(shù)的常規(guī)方法:函數(shù)名(arg)
  • 2.方法調(diào)用:
    - 方法:如果一個(gè)對(duì)象的屬性的值是一個(gè)函數(shù)沙兰,我們就稱方法。
    - 方法調(diào)用是通過對(duì)象的屬性調(diào)用函數(shù):對(duì)象.方法()
  • 構(gòu)造函數(shù)調(diào)用:使用new 構(gòu)造函數(shù)() : Number String Array Object Boolean
  • 間接調(diào)用:指通過函數(shù)自身的方法調(diào)用函數(shù) call() apply() bind()
  • 自調(diào)用:函數(shù)自己調(diào)自己 自執(zhí)行(function(){})

函數(shù)采納數(shù)的基礎(chǔ)知識(shí)

參數(shù)是什么灰羽?
參數(shù)是函數(shù)調(diào)用是累驮,傳入到函數(shù)體內(nèi)的值府怯。在函數(shù)體內(nèi)對(duì)值進(jìn)行處理,把處理的結(jié)果使用return返回出去位岔。

參數(shù)的分類

  • 形參:形式上的參數(shù)如筛。形參出現(xiàn)在定義函數(shù)是。形參是函數(shù)體內(nèi)局部變量抒抬。(只不過省略了var聲明而已杨刨。)英文:parameter => para
  • 實(shí)參:實(shí)際傳入的參數(shù)。實(shí)參出現(xiàn)在調(diào)用函數(shù)是擦剑。實(shí)參傳入函數(shù)體內(nèi)的值妖胀。英文:arguments => args

形參的默認(rèn)值

示例:形參默認(rèn)值

  function sum(a,b) {
            return a + b
        }
//JS:定義函數(shù)時(shí)它不檢查參數(shù)類型 調(diào)?函數(shù)時(shí)不檢查參數(shù)數(shù)量
function sum(a=0, b=0) {
//傳統(tǒng)檢測(cè)參數(shù)的?法
// if(b){
// return a + b
// } else if(a) {
// return a
// } else {
// return 0
// }
//在繁瑣的檢測(cè)參數(shù)的背景下芥颈,形參默認(rèn)值語法出現(xiàn)
return a + b
 }
console.log(sum())//NaN => 0
console.log(sum(2))//NaN => b = 0 || 忽略b
console.log(sum(2,9))//11
console.log(sum(2,9,5))//11

剩余參數(shù)

剩余參數(shù)是什么

  • 剩余參數(shù)是取代arguments對(duì)象的?種?案。
  • 剩余參數(shù)?于接收多余的實(shí)參(實(shí)參先傳?形參赚抡,后傳?剩余參數(shù))爬坑。
  • 剩余參數(shù)是?個(gè)數(shù)組
  • 剩余參數(shù)是?個(gè)標(biāo)識(shí)符,標(biāo)識(shí)符前?有三個(gè)點(diǎn): ...args
  • 剩余參數(shù)必須放在參數(shù)列表的最后?位
function sum(a,b,...rest){
//函數(shù)體
}
sum(10,20,30,40,50)

實(shí)列:找最大數(shù)

 function max(a,...aaa){
            let maxValue = -Infinity
            for(n of aaa){
                if(n>maxValue){
                    maxValue = n
                }
            }
            return maxValue
        }
        let resule = max(1,10,100,1000,-10000)
        console.log(resule )//1000

arguments對(duì)象

  • 示例:利用arguments對(duì)象向函數(shù)體內(nèi)傳遞參數(shù)
function sum(){
    let len = arguments.length
    let sum = 0
    for(let i=0;i<len;i++){
        sum += arguments[i]
    }
    return sum
}
let result = sum(4,6)
console.log(result)
  • 求和
function sum(a,b,...args){
    let num = a + b
    for(n of args){
        num = num + n
    }
    return num
}
let result = sum(4,6,3,7,5)
console.log(result)

arguments是什么

  • 向函數(shù)體內(nèi)傳遞實(shí)參的第二種方法
  • arguments是一個(gè)函數(shù)體內(nèi)的內(nèi)置對(duì)象涂臣。
  • arguments是一個(gè)類數(shù)組對(duì)象
  • 通過arguments對(duì)象可以訪問調(diào)用函數(shù)時(shí)的全部實(shí)參

什么時(shí)候使用arguments對(duì)象盾计?
當(dāng)實(shí)參數(shù)目不確定的時(shí)候,可以考慮使用arguments對(duì)象赁遗。但是在新寫的代碼中應(yīng)該盡量避免使用它署辉,它效率低且難優(yōu)化。通澈鸷停可以將其替換為...args剩余參數(shù)涨薪。

注意: 箭頭函數(shù)內(nèi)不存在arguments對(duì)象骑素。

函數(shù)的用途

函數(shù)的本質(zhì)工作: 直接賦值代碼
值就是數(shù)據(jù)
函數(shù)的本質(zhì)功能:通過語法定義一種形式炫乓,通過這種形式我們可以重復(fù)調(diào)用代碼,從而增強(qiáng)代碼的復(fù)用性献丑。
函數(shù)作為值:把函數(shù)看做是數(shù)據(jù)
把函數(shù)賦值給一個(gè)變量

let a = function()
{
console.log('hahaha')
}

把函數(shù)賦值給對(duì)象的屬性

 let sing = function(){console.log('hahahaha')}
        let a = sing
        // sing()
       // a()
       let songs = {zhnagsan:'hello',lisi:'你好'}
       let student = {
        name: 'zhangsna',
        age: 19,
       sing,
      songs
       }
    //    student.sing()
       console.log(student.songs)

把函數(shù)賦值給數(shù)組元素

 let arr = [1,2,student.sing]

把函數(shù)賦值給形參

arr.sort()

定義:array.sort()對(duì)數(shù)組元素就地排序并返回排序后的數(shù)組末捣。

語法一:默認(rèn)的排序方法

array.sort()

不傳遞參數(shù)的情況,使用sort()的工作原理

let arr = [20,3,1,100]
//1 -> 49 2->50 3->51 1 ->49
arr.sort()
console.log(arr);//[ 1, 100, 20, 3 ]
let arr2 = ['d','a',3,'A','y']
arr2.sort()//? [3,'A','a','d','y']
  • 按字符編碼排序:將數(shù)組元素轉(zhuǎn)字符串然后?較它們的UTF-16編碼
  • 默認(rèn)升序排列
  • 如果編碼相同创橄,那么按照原有順序排序

語法二:使用比較函數(shù)排序的語法

array.sort(compareFun)
  • Compare:?較 fun:function函數(shù)
  • copareFun: 這是ECMAScript的內(nèi)置函數(shù)箩做,內(nèi)置在sort函數(shù)體內(nèi)。
  • 在?較兩個(gè)值的時(shí)候妥畏,將值發(fā)送給?較函數(shù)邦邦,?較函數(shù)會(huì)返回負(fù)值、0醉蚁、正直
    a > b => 升序
    a < b => 降序
let arr = [20,3,1,100]
arr.sort((a,b) => a > b)//隱式return
console.log(arr);

函數(shù)作為命名空間

函數(shù)的?途:保證函數(shù)體內(nèi)的變量不會(huì)污染到全局命名空間

var a = '你好'
;(function (){
 //假設(shè)下?是外來的可復(fù)?代碼燃辖,放在函數(shù)體內(nèi),a就變成了局部變量网棍,避免與外部的全局變量a發(fā)?沖突
let a = 'hello'
var aa = 'hell'
}())
// console.log(a)
console.log(window.a);//變量a的副作?是影響到了window對(duì)象黔龟,因?yàn)樵谌窒露x的屬性都會(huì)成為window對(duì)
象上的?個(gè)屬性
console.log(window.fn)//變量fn的副作?是影響到了window對(duì)象,因?yàn)樵谌窒露x的函數(shù)都會(huì)成為window
對(duì)象上的?個(gè)?法
//所以我們可以去掉函數(shù)名滥玷,添加?括號(hào)氏身,改成?執(zhí)?函數(shù)來解決window對(duì)象上的副作?
;(function(){
let a = 'hello'
var aa = 'hell'
}())

?. (可選鏈運(yùn)算符)

  • ?. 可以無限鏈下去,不論有多少屬性惑畴,只要有最后可以訪問到屬性蛋欣,就會(huì)直接賦值最后的屬性值。否則當(dāng)任何一個(gè)鏈出現(xiàn)問題如贷,立刻停止豁状,而后賦值undefined捉偏。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市泻红,隨后出現(xiàn)的幾起案子夭禽,更是在濱河造成了極大的恐慌,老刑警劉巖谊路,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讹躯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缠劝,警方通過查閱死者的電腦和手機(jī)潮梯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惨恭,“玉大人秉馏,你說我怎么就攤上這事⊥严郏” “怎么了萝究?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锉罐。 經(jīng)常有香客問我帆竹,道長(zhǎng),這世上最難降的妖魔是什么脓规? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任栽连,我火速辦了婚禮,結(jié)果婚禮上侨舆,老公的妹妹穿的比我還像新娘秒紧。我一直安慰自己,他們只是感情好挨下,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布熔恢。 她就那樣靜靜地躺著,像睡著了一般复颈。 火紅的嫁衣襯著肌膚如雪绩聘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天耗啦,我揣著相機(jī)與錄音凿菩,去河邊找鬼。 笑死帜讲,一個(gè)胖子當(dāng)著我的面吹牛衅谷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播似将,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼获黔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蚀苛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起玷氏,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤堵未,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盏触,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渗蟹,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年赞辩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雌芽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辨嗽,死狀恐怖世落,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糟需,我是刑警寧澤屉佳,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站篮灼,受9級(jí)特大地震影響忘古,放射性物質(zhì)發(fā)生泄漏徘禁。R本人自食惡果不足惜诅诱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望送朱。 院中可真熱鬧娘荡,春花似錦、人聲如沸驶沼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽回怜。三九已至大年,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玉雾,已是汗流浹背翔试。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留复旬,地道東北人垦缅。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驹碍,于是被迫代替她去往敵國和親壁涎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凡恍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容