1.函數
-
返回值,就是函數執行的結果。
- 使用return 來設置函數的返回值。
- 語法:return 值;
- 該值就會成爲函數的返回值,可以通過一個變量來接收返回值
- return後邊的代碼都不會執行,一旦執行到return語句時,函數將會立刻退出。
- return後可以跟任意類型的值,可以是基本數據類型,也可以是一個對象。
- 如果return後不跟值,或者是不寫return則函數默認返回undefined。
- break、continue和return
- break
- 退出循環
- continue
- 跳過當次循環
- return
- 退出函數-
參數,函數的實參也可以是任意的數據類型。
-
方法(method)
- 可以將一個函數設置爲一個對象的屬性,
當一個對象的屬性是一個函數時,
我們稱這個函數是該對象的方法。 - 對象.方法名();
- 函數名();
- 可以將一個函數設置爲一個對象的屬性,
-
2.作用域
- 作用域簡單來說就是一個變量的作用範圍。
- 在JS中作用域分成兩種:
1.全局作用域
- 直接在script標籤中編寫的代碼都運行在全局作用域中
- 全局作用域在打開頁面時創建,在頁面關閉時銷燬。
- 全局作用域中有一個全局對象window,window對象由瀏覽器提供,
可以在頁面中直接使用,它代表的是整個的瀏覽器的窗口。
- 在全局作用域中創建的變量都會作爲window對象的屬性保存
在全局作用域中創建的函數都會作爲window對象的方法保存
- 在全局作用域中創建的變量和函數可以在頁面的任意位置訪問。
在函數作用域中也可以訪問到全局作用域的變量。
- 儘量不要在全局中創建變量
- 在JS中作用域分成兩種:
(1).函數作用域
- 函數作用域是函數執行時創建的作用域,每次調用函數都會創建一個新的函數作用域。
- 函數作用域在函數執行時創建,在函數執行結束時銷燬。
- 在函數作用域中創建的變量,不能在全局中訪問。
- 當在函數作用域中使用一個變量時,它會先在自身作用域中尋找,
如果找到了則直接使用,如果沒有找到則到上一級作用域中尋找,
如果找到了則使用,找不到則繼續向上找,一直會
- 變量的聲明提前
- 在全局作用域中,使用var關鍵字聲明的變量會在所有的代碼執行之前被聲明,但是不會賦值。
所以我們可以在變量聲明前使用變量。但是不使用var關鍵字聲明的變量不會被聲明提前。
- 在函數作用域中,也具有該特性,使用var關鍵字聲明的變量會在函數所有的代碼執行前被聲明,
如果沒有使用var關鍵字聲明變量,則變量會變成全局變量
- 函數的聲明提前
- 在全局作用域中,使用函數聲明創建的函數(function fun(){}),會在所有的代碼執行之前被創建,
也就是我們可以在函數聲明前去調用函數,但是使用函數表達式(var fun = function(){})創建的函數沒有該特性
- 在函數作用域中,使用函數聲明創建的函數,會在所有的函數中的代碼執行之前就被創建好了。
3.this(上下文對象)
- 我們每次調用函數時,解析器都會將一個上下文對象作爲隱含的參數傳遞進函數。
使用this來引用上下文對象,根據函數的調用形式不同,this的值也不同。- this的不同的情況:
1.以函數的形式調用時,this是window
2.以方法的形式調用時,this就是調用方法的對象
3.以構造函數的形式調用時,this就是新創建的對象
- this的不同的情況:
4.構造函數
- 構造函數是專門用來創建對象的函數
- 一個構造函數我們也可以稱爲一個類
- 通過一個構造函數創建的對象,我們稱該對象時這個構造函數的實例
- 通過同一個構造函數創建的對象,我們稱爲一類對象
- 構造函數就是一個普通的函數,只是他的調用方式不同,
如果直接調用,它就是一個普通函數
如果使用new來調用,則它就是一個構造函數
- 例子:
function Person(){
}
- 構造函數的執行流程:
1.創建一個新的對象
2.將新的對象作爲函數的上下文對象(this)
3.執行函數中的代碼
4.將新建的對象返回
- instanceof 用來檢查一個對象是否是一個類的實例
- 語法:對象 instanceof 構造函數
- 如果該對象時構造函數的實例,則返回true,否則返回false
- Object是所有對象的祖先,所以任何對象和Object做instanceof都會返回true
- 枚舉對象中的屬性
for...in
語法:
for(var 屬性名 in 對象){
}
for...in語句的循環體會執行多次,對象中有幾個
屬性就會執行幾次,
每次講一個屬性名賦值給我們定義的變量
,我們可以通過它來獲取對象中的屬性