文章目錄
7. 數組
數組是指一組數據的集合,其中的每個數據被稱作元素,在數組中可以存放任意類型的元素,數組是一種將一組數據存儲在單個變量名下的方式。
7.1 數組的創建方式
js中創建數組有兩種方式:
- 利用new 創建數組
- 利用數組字面量創建數組
7.1.1 利用 new 創建數組
var arrayName = new Array(); //創建一個新的空數組
7.1.2 利用數組字面量創建數組
//1. 使用數組字面量創建空數組
var arrayName = [];
//2. 使用數組字面量創建並初始化數組
var arrayName = ['name1', 'name2', 'name3'];
- 數組的字面量是方括號
[]
- 聲明數組並賦值稱爲數組的初始化
7.2 獲取數組元素
7.2.1 數組的索引
索引[下標]:用來訪問數組元素的序號(數組下標從0開始)
7.2.2 遍歷數組
循環遍歷
<script>
//遍歷數組
var arr = ['red', 'green', 'blue'];
for(var i = 0; i < 3; i++){
console.log(arr[i])
}
</script>
/*
red
green
blue
*/
7.2.3 數組長度
使用“數組名.length”可以訪問數組元素的數量(數組長度)。
<script>
//數組長度
var arr = ['red', 'green', 'blue'];
console.log(arr.length)
</script>
// 3
7.2.4 增加數組元素
-
修改length
<script> var arr = ['red', 'green', 'blue']; console.log(arr.length); arr.length = 5; console.log(arr); </script> /* 3 (5) ["red", "green", "blue", empty × 2] */
length 屬性是可讀寫的,默認值爲 undefined
-
修改索引號
<script> var arr = ['red', 'green', 'blue']; console.log(arr.length); arr[3] = 'pink'; console.log(arr.length); console.log(arr); </script> /* 3 4 (4) ["red", "green", "blue", "pink"] */
8. 函數
函數:封裝了一段可被重複執行的代碼塊
<script>
function name(參數列表){
//函數體
}
</script>
8.1 函數的參數
實參 :函數調用時 傳入的 參數
形參: 函數定義時 參數列表內的元素
- 如果實參個數 = 形參個數 正常運算
- 如果實參個數 > 形參個數 多餘參數不參與運算
- 如果實參個數 < 形參個數 多餘形參爲undefined 輸出 NaN
8.2 return
return 終止函數並且只能返回一個值
8.3 arguments
arguments ,所有函數內置的對象,存儲了傳遞的所有實參
arguments是一個僞樹組,因此可以遍歷,
- 具有length 屬性
- 按索引方式存儲數據
- 不具有數組的push,pop等方法
8.4 函數表達式 :匿名函數
var 變量名 = function(參數列表){
//函數體
}
9. 作用域
通常來說, 一段程序代碼中所用到的名字並不總是有效和可用的,而限定這個名字的可用性的代碼範圍就是這個名字的作用域。作用域的使用提高了程序邏輯的局部性,增強了程序的可靠性,減少了名字衝突。
全局作用域:整個script標籤內 或者是一個單獨的is文件
局部作用域: 在函數內部就是局部作用據
9.1 全局變量
在全局作用域下聲明的變量叫做全局變量(在函數外部定義的變量):
- 全局變量在代碼的任何位置都可以使用
- 在全局作用域下var聲明的變量是全局變量
- 特殊情況下,在函數內不使用var聲明的變量也是全局變量(不建議使用)
9.2 局部變量
在局部作用域下聲明的變量叫做局部變量(在函數內部定義的變量):
- 局部變量只在該函數內部使用
- 在函數內部var聲明的變量是局部變量
- 函數的形參實際上就是局部變量
9.3 作用域鏈
- 只要是代碼,就至少有一個作用域
- 寫在函數內部的爲局部作用域
- 函數內部如果還有函數,那麼在這個作用域中又產生了一個作用域
- 根據內部函數可以訪問外部函數變量的機制,用鏈式產找決定哪些數據能被內部函數訪問,就稱爲作用域鏈
10. 預解析
JavaScript代碼是由瀏覽器中的JavaScript解析器來執行的。JavaScript解析器在運行JavaScript代碼時候分爲兩步:預解析和代碼執行
- 預解析 js引擎 會把js 裏面所有 var 還有 function 提升到當前作用域的最前面
- 代碼執行 按照代碼書寫的順序從上到下執行
預解析 分爲 變量預解析(變量提升)和 函數預解析(函數提升)
- 變量提升 就是把所有的變量聲明提升到當前作用域的最前面 不提升複製操作
- 函數提升 就是把所有的函數聲明提升到當前作用域的最前面 不調用函數
11. JavaScript 對象
11.1 對象
萬物皆對象
11.2 創建對象的三種方式
11.2.1 字面量創建對象
對象字面量:就是花括號{}
裏面包含了表達這個具體事物(對象)的屬性和方法
var obj = {} //創建一個空對象
var obj1 = {
uname:"name",
sex:"man",
say: function(){
console.log('hello world');
}
} //創建了一個對象
//屬性/方法 鍵值對 賦值
// 屬性/方法之間 , 隔開
// 方法 使用匿名函數
調用方式
// 1
obg1.uname
// 2
obj1['uname']
// 3
obj1.say()
11.2.2 new Object
var obj = new Object(); // 創建了一個空的對象
obj.uname = 'name';
obj.sex = 'man';
obj.say = function(){
console.log('hello world');
}
11.2.3 構造函數
構造函數:一種特殊的函數,主要用來初始化對象,即爲對象成員變量賦初始值,與 new 搭配使用
function 構造函數名(){
this.屬性 = 值;
this.方法 = function(){}
}
var 變量 = new 構造函數名();
- 構造函數首字母大寫
- 構造函數不需要return
11.3 內置對象
js中的對象分爲三種:自定義對象、內置對象、瀏覽器對象
內置對象是js封裝好的常用或最基本的功能: Math、Date、 Array、String等
11.3.1 Math對象
Math.PI //3.1415926
Math.max() //最大值
Math.floor() //向下取整
Math.ceil() //向上取整
Math.round() //四捨五入
Math.abs() //絕對值
Math.random() //隨機數