當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
07_JS函数
JS函數(shù)
函數(shù)聲明
- 使用構(gòu)造函數(shù)
- 使用關(guān)鍵字
- 匿名函數(shù)
函數(shù)參數(shù)
實參,形參都可以是任意數(shù)據(jù)類型,瀏覽器執(zhí)行時不會檢查實參類型和數(shù)量,在函數(shù)內(nèi)部做運算時會做強制類型轉(zhuǎn)換,多的參數(shù)會被舍棄,少的會被填充為Underfind
- this:指向函數(shù)運行的上下文對象,根據(jù)函數(shù)被調(diào)用的方式不同,this指向的對象也不一樣
| 以函數(shù)的形式調(diào)用 | window |
| 以方法的形式調(diào)用 | 指向調(diào)用方法的對象 |
| 以構(gòu)造函數(shù)的形式調(diào)用 | 指向最新創(chuàng)建的對象 |
| call()和apply() | 指向指定的對象 |
- argnment 同this一樣,瀏覽器默認傳入的隱藏參數(shù),是保存實參的一個類數(shù)組對象,用來分裝實參,其中有一個callee屬性,對應(yīng)正在執(zhí)行的函數(shù)對象。
作用域
-
全局作用域
- 在函數(shù)外部定義的變量就是全局變量,全局變量會作為瀏覽器窗口window對象的屬性保存
- 在全局作用域創(chuàng)建的函數(shù)會作為 window對象 的方法保存
- window對象由瀏覽器自動創(chuàng)建
- 生命周期:網(wǎng)頁打開時創(chuàng)建,關(guān)閉時銷毀
- 盡量不要在全局作用域定義變量,會污染命名空間
-
函數(shù)(局部)作用域
- 在函數(shù)內(nèi)部定義的變量(屬性)和函數(shù)(方法)只能在函數(shù)內(nèi)部使用,全局無法使用
- 生命周期:函數(shù)執(zhí)行時創(chuàng)建,執(zhí)行結(jié)束時銷毀
- 使用 window.變量名 訪問全局變量。
- 在函數(shù)中,不使用 var 定義的變量會成為全局變量
- 變量的使用遵循就近原則
-
函數(shù)的申明提前:使用關(guān)鍵字定義的函數(shù)會在整個程序執(zhí)行之前預先執(zhí)行,因此可以在函數(shù)聲明之前調(diào)用函數(shù)
返回值
使用return返回,無返回值或返回空時(只寫一個return)返回Underfind
- return會結(jié)束整個函數(shù)
立即執(zhí)行函數(shù)
函數(shù)內(nèi)建方法
call()和apply()
- 調(diào)用這兩個方法時,函數(shù)都會執(zhí)行
- 可以指定一個對象作為函數(shù)的第一個參數(shù)(this)這個對象會成為函數(shù)的this,用來修改函數(shù)的上下文對象
- 如果需要傳遞參數(shù)
- call:需要將所有要傳遞的參數(shù)封裝到數(shù)組中,也就是call只接受兩個參數(shù),第一個是一個對象,第二個是參數(shù)數(shù)組
- apply:可以直接跟在對象后面?zhèn)鬟f,不限制參數(shù)個數(shù)
總結(jié)
- 上一篇: Linux安装tomcat8
- 下一篇: JS_14 执行上下文与执行上下文栈