設定Chrom檔案下載路徑
阿新 • • 發佈:2020-12-12
技術標籤:jsjavascriptjs
一.函式
基本形式:function a(){},函式在呼叫時才會執行。
1.函式執行方式
呼叫執行:a();
被動執行:document.onclick = a;(其後不加括號,事件觸發時才會執行)
2.匿名函式
匿名函式要參與到表示式中,不可單獨出現,否則報錯。比如賦值給事件。
document.onclick = function(){
console.log(“匿名函式”)
}
若我們將一個函式賦給了事件並且給它取了名字,它是不可以被呼叫的,比如:
document.onclick = function aa(){
console.log ("匿名函式")
}
aa(); 是會報錯的
3.作用域
- 全域性作用域,對應全域性變數
全域性變數即沒被任何東西限制,直接寫在script中。全域性變數可以被所有的物件使用,其他物件也可訪問,全域性不可訪問區域性。 - 區域性作用域,對應區域性變數
區域性變數可訪問全域性,但不可訪問其他作用域的變數。區域性作用域的東西不可被其他作用域的東西使用。
作用域鏈:使用某一變數時,先從自身作用域找,沒有的話,往上一級找。
全域性變數和區域性變數名字可以相同,作用域可無限巢狀。呼叫時,具備就近原則
例1:
function x(){
let a = 2;
}
此處的x為全域性變數,a為區域性變數
let a = 2;
function x(){
let b = 3
}
console.log(a,b)
此處因為b是區域性變數,在全域性中列印,找不到b,所以會報錯。
例3:
let a = 2;
function x(){
let b = 3
console.log(a,b) //此處列印2,3,可知區域性可訪問全域性
}
x();
4.函式表示式
aa();
//函式宣告,可提前呼叫,即可提前解析、使用
function aa(){
console. log("aa函式")
}
//函式表示式,不可提前使用。
let bb = function(){
console.log("bb函式")
}
aa();
bb();
let bb = function(){
console.log("bb函式")
}() //函式表示式可加括號自執行,因其是被賦給表示式的。這個方法不大會用
函式變函式表示式方法:
當我們在寫專案時,可能會遇到詞窮的時候,變數名會不夠用,我們就可以用這種方式,各自開闢一些作用域,在不同作用域定義相同名字的變數也可。
(function(){
console.log("11")
})();
!function(){
console.log("11")
}();
+function(){
console.log("11")
}();
-function(){
console.log("11")
}();
~function(){
console.log("11")
}();
5.引數
引數分為形參(定義函式時規定好的變數名,作用於函式內部)和實參(呼叫函式時傳入的實際資料),呼叫函式時,傳參
function sum(a,b){ //此處a,b為形參
console.log(a+b)
}
sum(1,2) //此處1,2為實參
當我們不確定形實參的個數時,形參不可以一一預設好對應的變數,我們可以用arguents來顯示所有實參。
function sum(){
console.log(arguments)
}
sum(1,2)
sum(1,25,7,9,)
sum(1,4,6)
sum(1,2,3,6,7)
6.返回值
一個函式執行完後,預設返回值為undefined.
function sum(x,y){
let z = x+y
}
let a = sum(2,3)
console.log(a) //列印undefined
function sum(x,y){
let z = x+y
return z
}
let a = sum(2,3)
console.log(a) //列印5
我們在寫程式碼的時候,一般採用第二種方式,函式返回一個什麼東西,使用時,直接傳實參到函式中,並賦給一個變數,直接使用函式的返回值。所以我們在寫註釋時,要表明兩個東西:
-
@params
告訴使用這個函式的re,應該傳入什麼實參
-
@reutrn
告訴使用這個函式的人,我會返回什麼資料