1. 程式人生 > >js --基本語法3 函式,陣列,堆疊

js --基本語法3 函式,陣列,堆疊

1. 函式
1. 函式就是待執行的程式碼段
2. 使用 :
函式的宣告
函式的呼叫
3. 語法 :
function 函式名(引數列表){
函式體;
return 返回值;
}
解釋 :
1. JS中使用function關鍵字宣告函式
2. 函式名自定義,命名規範參考變數的命名規範
3. 引數表示函式體執行所需要使用的資料,可以省略,
小括號不能省略
4. 函式體就是程式碼段,在函式呼叫時執行
5. return 表示返回值,用來返回給外界函式體執行的
結果.返回值只能寫一個值,return後面不能再寫程式碼,
return後面的程式碼都不執行
6. 函式呼叫 :
函式名(實際引數);
練習 :


改版日期計算器
1. 閏年判斷使用函式封裝
2. 主體功能使用函式封裝
3. 新增介面元素,通過按鈕點選呼叫主函式
4. 作用 :
1. 封裝程式碼段,實現某個功能
2. 實現程式碼的複用
5. 匿名函式
語法 :
1. var fn = function (){};
定義變數儲存函式地址,等同於函式名
呼叫 :
fn();
2. 匿名函式自執行
(匿名函式宣告)(實際引數);
6. 函式內部物件(瞭解)
arguments 伴隨函式呼叫,自動產生,直接使用.
表示函式的實際引數,真正傳入到函式內部的資料.
本身也是類陣列結構
2. 變數的作用域
1. 變數起作用的範圍
2. 分類 :
1. 全域性變數

在全域性作用域,程式的任意地方都可以訪問
2. 區域性變數
在函式作用域中可以訪問,出了當前函式,變數就無法
使用
3. 使用 :
1. 函式外部定義的變數,都是全域性變數,任意地方都可以訪問
2. 函式內部使用var關鍵字定義的變數,是區域性變數,只在
當前函式作用域中起作用,外界無法訪問
3. 函式內部省略var關鍵字定義的變數,都是全域性變數
4. 作用域鏈 :
訪問變數時,會首先在當前作用域中查詢有無該變數,
有的話直接使用;
沒有的話,到上一級作用域中查詢,
上一級也沒有,再向上查詢...
直到全域性作用域
形成從裡向外鏈式查詢
3. JS 內建物件
1. 物件由屬性和方法組成
2. 分類 :

Array String RegExp Math Date...
3. Array 陣列
1. 陣列 : 是一種儲存結構,可以儲存一組資料,自動為每個
元素分配下標,預設從0開始
2. 語法 :
1. 字面量方式
var arr1 = [10,'20',true];
2. new 關鍵字建立
//建立的同時初始化元素
var arr2 = new Array(10,20,30);
//只傳入一個number值,表示指定陣列長度
var arr3 = new Array(5);
3. 使用 :
1. 陣列元素的下標 :
預設為每個元素自動分配下標,取值範圍 0 ~ length-1
2. length 屬性
獲取陣列中元素個數
使用點語法訪問物件的屬性與方法
et :
arr.length;
3. JS 中陣列長度是可以動態修改的,可以向陣列任意一個位置
插入元素,影響最終長度
4. 遍歷陣列
藉助迴圈訪問陣列中每一個元素
1. 普通for迴圈
for(var i = 0; i < arr.length; i ++){
console.log(arr[i]);
}

for(var j = arr.length-1; j >= 0; j --){
console.log(arr[j]);
}
2. for - in 瞭解
3. forEach() 瞭解
練習 :
1. 迴圈接收使用者輸入的資料,儲存在陣列中,
直到用輸入exit表示結束,結束之後輸出陣列
2. 建立一個包含數值的陣列,找這一組資料中的最大值
3. 建立只有3個數字的陣列,按照從小到大排序後輸出
5. 陣列方法
1. toString();
將陣列元素轉換成字串輸出,返回一個字串
2. join()
將陣列中元素拼接成一個字串並返回
引數 : 可選,表示元素之間的連線字元
et :
//指定元素之間的連線符,預設為逗號
var str3 = arr.join("");
console.log(str3);
3. reverse()
反轉陣列元素,以倒序形式重新排列陣列元素
[10,20,30] -> [30,20,10]
返回值 : 返回轉換後的陣列,
方法會改變陣列的原有結構,一旦呼叫方法,
陣列本身就已經改變了,可以不接收返回值
4. sort()
對陣列中元素排序,預設按照元素的Unicode碼值升序
排列,改變陣列原有的結構和順序
返回值 : 返回排序後的陣列,原陣列也會改變.
參 數 : 可選,可以是自定義的排序函式
示例 :
針對number型別,從小到大排列
function sortASC(a,b){
return a-b;
}
arr.sort(sortASC);
解釋 :
自動將陣列中資料兩兩傳入,比較大小,
a-b 表示從小到大排列(按照字母表順序或碼值)
b-a 表示從大到小排列
5. 陣列的進出棧操作
棧與佇列都是儲存結構
特點 :
棧 : 只有一個出入口,資料按順序存入,先進後出
佇列 : 先進先出
陣列採用棧結構儲存
方法介紹 :
1. 運算元組尾部元素
1. push(data)
在陣列的末尾新增元素,多個元素之間使用
逗號隔開
返回值 : 新陣列的長度
注意 : 直接向陣列新增元素,原始陣列會被改變
2. pop()
移除陣列末尾元素
返回值 : 返回被移除的元素
無引數
2. 運算元組頭部元素
1. 在陣列頭部追加元素
unshift();
引數 : 一個或多個元素
返回值 : 陣列長度
2. 移除陣列頭部元素
shift();
返回被刪除的元素
無引數
練習 :
隨意錄入一個數字,轉換成二進位制並且輸出
十進位制轉換二進位制 :
對2取餘,直至商為0,餘數倒序排列
十進位制 : 5
5 / 2 = 2 .... 1
2 / 2 = 1 .... 0
1 / 2 = 0 .... 1
十進位制 : 9
9 / 2 = 4 .... 1
4 / 2 = 2 .... 0
2 / 2 = 1 .... 0
1 / 2 = 0 .... 1
二進位制 1001
6. 二維陣列
1. 陣列中每個元素又都是陣列
語法 :
一維陣列 : [10,20,30]
二維陣列 : [[1,2,3],[4,5,6],[7,8,9]]
2. 訪問 :
語法 :
一維陣列訪問 : arr[0];
二維陣列訪問 : arr[0][0];
訪問第一個內層陣列中下標為0的元素
練習 :
宣告包含若干數字的陣列,
接收使用者輸入的數字,
遍歷陣列,查詢資料,如果陣列存在相應的資料,返回下標
不存在,返回-1並提示