函數
-
基本概念
- 函數是由事件驅動的或者當它被調用時執行的可重復使用的代碼塊。
- JavaScript 函數語法:函數就是包裹在花括號中的代碼塊:
function 函數名() { 這里是要執行的代碼 }
-
函數的聲明和調用:
- 使用了關鍵詞 function來聲明函數
- 關鍵詞 function 必須是小寫的,并且必須以與函數名稱相同的大小寫來調用函數。
- 函數本身不會自動運行,只有當調用該函數時,才會執行函數內的代碼。
- 函數可以通過其名字加上括號中的參數進行調用
- 可以在某事件發生時直接調用函數(比如當用戶點擊按鈕時),并且可由 JavaScript 在任何位置進行調用。
- 在調用函數時,您可以向其傳遞值,這些值被稱為參數。帶有參數的函數也被稱為有參函數。
-
帶有返回值的函數:
- 有時,我們會希望函數將值返回調用它的地方。通過使用 return 語句就可以實現。
- 在使用 return 語句時,函數會停止執行,并返回指定的值。
- 可以將返回值賦值給一個變量,然后對變量進行操作
- 當函數遇到第一個return后將終止執行函數后邊的語句,直接跳出函數
-
arguments 對象:
- 在函數代碼中,使用特殊對象 arguments存儲函數調用傳遞給該函數的所以參數。
- 還可以用 arguments 對象檢測函數的參數個數,引用屬性 arguments.length 即可。
- arguments [0]表示函數的第一個參數,arguments [1]表示函數的第二個參數......
- 通過arguments可以動態的添加參數。
return arguments[0];
<script type="text/javascript"> function draw() { var c=document.getElementById("myCanvas"); var con=c.getContext("2d"); for (var i = 0; i < 6; i++) { for (var j = 0; j < 6; j++) { con.fillStyle="rgb(212, "+Math.floor(255-11.5*i)+", "+Math.floor(255-11.5*j)+")"; con.beginPath(); con.arc(20+j*50,20+i*50,15,0,Math.PI*2,true); con.closePath(); con.fill(); } } } </script>
對象和數組
對象:Object
- JavaScript 中的所有事物都是對象:字符串、數值、數組、函數...
- 對象是屬性的集合,每個屬性都有名字和值,對象可以通過屬性的名字存取屬性的值。
- 對象的屬性既可以存放基本數據類型也可以存放其他對象的引用值或者函數的引用值,如果存儲的是函數的的引用值則該屬性稱為方法
- 對象可以看做帶有屬性和方法的特殊數據類型。
- 對象包含兩個基本要素:屬性-值,也稱作鍵-值/名-值;當屬性值為方法時也稱作:屬性(字段)和方法(函數)
- 對象的創建方法
- 通過new運算符創建
- new關鍵字可以省略
- 屬性可以用引號包含也可以不用
- 可以用點符號訪問對象屬性值也可以通過數組的方式,即用["屬性名稱"]
- 可以使用delete運算符刪除對象的屬性。
// var person=new Object();
// var person={};
// person.name="木木";
// person.age=18;
var person={name:"木木",age:"18"};
document.write(person.name);
document.write(person["age"]);
數組:Array
數組的聲明(創建)方法:
- new關鍵字創建空數組
- new關鍵字創建包含元素的數組
- new關鍵字創建指定元素個數的數組
- 也可以使用[]直接創建數組
- 可以使用length屬性獲取數組的長度;并且可以給一個數組賦值。
數組元素的基本操作程序運行時通常需要讀取數組中的數據,有時候需要對數據進行修改。
- 讀取數據:可以使用索引查詢獲取數組元素和添加數組元素
添加數據:使用push方法將新元素添加到數組尾部.
刪除數據:可以使用delete運算符刪除指定的元素。
刪除末尾元素(更新數據)pop()方法:該方法會返回刪除的元素。
刪除頂端的元素 shift方法:
在數組頂端添加元素 unshift方法:返回值為新數組的長度,但不建議使用,IE會出錯。
字符轉換:toString方法將數組表示為字符串。
join方法輸出數組元素。(輸出結果會轉換成字符串)
-
數組逆序reverse:顛倒數組元素的順序;返回值為逆序后的新數組。
var fruit=new Array('香蕉','蘋果','橘子'); fruit.push('芒果'); document.write(fruit+'<br>'); // delete fruit[0]; // document.write(fruit.pop()+'<br>'); // document.write(fruit.shift()+'<br>'); fruit.unshift(1); document.write(typeof fruit[0].toString()+'<br>'); document.write(fruit.join('-')+'<br>'); document.write(fruit.reverse());
-
數組排序 sort:
- 語法 數組名.sort(sortfunction)
- sortfunction若省略,默認為從按照ASII字符順序進行升序排列
- sortfunction必須返回:正值、零、負值三者之一。賦值表示第一個值大于第二個值,負值反之,零則相等。
// var fruit=new Array('5個香蕉','2個蘋果','3個橘子'); // document.write(fruit.sort()+'<br>'); var arr=[31,45,52,12,4] document.write(arr.sort(sortFun)); function sortFun(a,b) { if (a>b) { return 1; }else if (a<b) { return-1; }else { return 0; } }
擴充數組 concat:將多個數組的元素合并為一個新的數組。
var arr=arr1.concat(arr2);
也可以寫多個元素-
splice方法:刪除、替換、插入元素(返回值是切取得元素)
- 會更改原數組
- 第一參數為起始位置索引
- 第二參數為切取元素個數
- 第三個參數為插入元素,可選項
-
切取數組的一段元素 slice:
- 切取部分作為新數組返回,不會對原數組改變。
- 第一參數為起始位置索引
- 第二參數為結束位置索引,注意區分splice
- 若省略第二個參數則直接切取到結尾
var arr=new Array('元素0','元素1','元素2','元素3','元素4','元素5','元素6');
document.write(arr+'</br>')
var arr1=arr.splice(1,4)
document.write(arr+'</br>')
document.write(arr1+'</br></br>')
var arr=new Array('元素0','元素1','元素2','元素3','元素4','元素5','元素6');
document.write(arr+'</br>')
var arr1=arr.slice(1,4)
document.write(arr+'</br>')
document.write(arr1+'</br>')
in 運算符和 for in循環語句
- in 運算符用來檢測對象中是否具有某一特定屬性,通常用于遍歷集合中的所有元素。
- 通常我們使用for/in 語句循環遍歷對象的屬性,在數組中可以遍歷數組中的所有元素。
階乘
function test(n) {
if (n==1) {
return 1;
}else {
return n*test(n-1);
}
}
document.write(test(5));
輸出1000--9999直接的所有回文
var arr=new Array();
function test() {
for (var i = 1000; i < 9999; i++) {
var gw=i%10;
var sw=Math.floor(i/10)%10;
var bw=Math.floor(i/100)%10;
var qw=Math.floor(i/1000)%10;
if (gw==qw&&sw==bw) {
arr.push(i);
}
}
}
test();
document.write(arr);
日期
創建Date對象四種方法:
- var date= new Date();
- 無參數的情況下返回值為當前時間。
- 不同瀏覽器顯示的時間格式會有細微差異
- var date = new Date(milliseconds);
- var date = new Date(dateString);
- var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);
時間相關的兩個方法(這兩種方法了解一下就可以了):
- Date.parse()返回1970年1月1日午夜到指定日期(字符串)的毫秒數。
-
Date.parse()參數支持的時間格式如下:
- 1/24/2016;
- January 24,2016;
- Sun Jan 24 2016 10:10:10 GMT+0800
- 格式不正確會返回NaN
Date.UTC()根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數。
-
Date.UTC()參數支持的時間格式如下:
- 2016,1(前兩個參數是必須的);
- 2016,1,24,10,10,10
- 數值含義為年/月/日/時/分/秒;格式不正確會返回NaN
- 月份和日期是從0開始
- 注意UTC時間和時區的換算,如東八區和標準時間是八小時時差
var date = new Date(); // var date = new Date(1435929394854); // var date = new Date('2016,12,13'); // var date = new Date(2012,12,13,16,10,10); document.write(Date.parse('1/11/2011')+'<br>');
Date實例相關的字符串表示方法(了解即可):
- toSting()獲取Date實例的字符串表示
- toDateSting()獲取Dater的日期部分字符串表示
- toTimeSting()獲取Dater的時間部分字符串表示
- toLocaleString() 據本地時間格式,把 Date 對象轉換為字符串。
- toLocaleDateString() 根據本地時間格式,把 Date 對象的日期部分轉換為字符串。
- toLocaleTimeString() 根據本地時間格式,把 Date 對象的時間部分轉換為字符串。
- valueOf():轉換為毫秒數
var date = new Date();
document.write(date.toDateString());
Date 對象方法
通過使用針對日期對象的方法,我們可以很容易地對日期進行操作。
getDate() 從 Date 對象返回一個月中的某一天 (1 ~ 31)。
getDay() 從 Date 對象返回一周中的某一天 (0 ~ 6)。
getFullYear() 從 Date 對象以四位數字返回年份。
getHours() 返回 Date 對象的小時 (0 ~ 23)。
getMilliseconds() 返回 Date 對象的毫秒(0 ~ 999)。
getMinutes() 返回 Date 對象的分鐘 (0 ~ 59)。
getMonth() 從 Date 對象返回月份 (0 ~ 11)。
getSeconds() 返回 Date 對象的秒數 (0 ~ 59)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒數。
- getTimezoneOffset() 返回本地時間與格林威治標準時間 (GMT) 的分鐘差
- getUTCDate() 根據世界時從 Date 對象返回月中的一天 (1 ~ 31)。
- getUTCDay() 根據世界時從 Date 對象返回周中的一天 (0 ~ 6)。
- getUTCFullYear() 根據世界時從 Date 對象返回四位數的年份。
- getUTCHours() 根據世界時返回 Date 對象的小時 (0 ~ 23)。
- getUTCMilliseconds() 根據世界時返回 Date 對象的毫秒(0 ~ 999)。
- getUTCMinutes() 根據世界時返回 Date 對象的分鐘 (0 ~ 59)。
- getUTCMonth() 根據世界時從 Date 對象返回月份 (0 ~ 11)。
- getUTCSeconds() 根據世界時返回 Date 對象的秒鐘 (0 ~ 59)。
- parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒數。
setDate() 設置 Date 對象中月的某一天 (1 ~ 31)。
setFullYear() 設置 Date 對象中的年份(四位數字)。
setHours() 設置 Date 對象中的小時 (0 ~ 23)。
setMilliseconds() 設置 Date 對象中的毫秒 (0 ~ 999)。
setMinutes() 設置 Date 對象中的分鐘 (0 ~ 59)。
setMonth() 設置 Date 對象中月份 (0 ~ 11)。
setSeconds() 設置 Date 對象中的秒鐘 (0 ~ 59)。
setTime() setTime() 方法以毫秒設置 Date 對象。
- setUTCDate() 根據世界時設置 Date 對象中月份的一天 (1 ~ 31)。
- setUTCFullYear() 根據世界時設置 Date 對象中的年份(四位數字)。
- setUTCHours() 根據世界時設置 Date 對象中的小時 (0 ~ 23)。
- setUTCMilliseconds() 根據世界時設置 Date 對象中的毫秒 (0 ~ 999)。
- setUTCMinutes() 根據世界時設置 Date 對象中的分鐘 (0 ~ 59)。
- setUTCMonth() 根據世界時設置 Date 對象中的月份 (0 ~ 11)。
- setUTCSeconds() setUTCSeconds() 方法用于根據世界時 (UTC) 設置指定時間的秒字段。
- toDateString() 把 Date 對象的日期部分轉換為字符串。
- toGMTString() 已廢棄。請使用 toUTCString() 方法代替。
- toISOString() 使用 ISO 標準返回字符串的日期格式。
- toJSON() 以 JSON 數據格式返回日期字符串。
- toLocaleDateString() 根據本地時間格式,把 Date 對象的日期部分轉換為字符串。
- toLocaleTimeString() 根據本地時間格式,把 Date 對象的時間部分轉換為字符串。
- toLocaleString() 據本地時間格式,把 Date 對象轉換為字符串。
- toString() 把 Date 對象轉換為字符串。
- toTimeString() 把 Date 對象的時間部分轉換為字符串。
- toUTCString() 根據世界時,把 Date 對象轉換為字符串。
- UTC() 根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數。
- valueOf() 返回 Date 對象的原始值。
var date = new Date();
date.setFullYear(2000);
document.write(date.getDate()+'<br>');
document.write(date.getFullYear()+'<br>');
document.write();