函数
-
基本概念
- 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
- 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();
网友评论