(1)可以在函数的外部访问函数内部的变量
(2)可以让变量的值始终保存在内存中
注意:滥用'闭包'对程序的执行效率会产生很大的影响
在一个函数的内部创建另外一个函数。另外一个函数可以访问该函数的局部变量
1、先对var变量和function函数进行解析,然后再执行其他的代码
/*先解析var变量num然后执行console输出最后把10赋给num*/ console.log("num=",num); var num = 10;
2、function函数的预解析
/*先解析fn函数的定义然后执行console语句*/ console.log("1+2+3+...+100=",fn()); function fn(){ var s = 0; for(var i=1;i<=100;i++){ s += i; } return s; }
一切皆为对象,是属性和行为的结合体。在面向对象中把'属性'称为对象的成员(成员变量)把'行为'称为成员方法(成员函数)。
属性:反映的是对象的静态特征
行为:反映对象的动态特征
是一种数据类型,用"{}"表示一个对象,在"{}"中包裹了对象的成员(包括属性和方法)以"key:value"(键-值对)方式存储各成员。"key"是成员名,"value"是成员的值
对成员的访问格式是:
对象名.属性名 或 对象名['属性名']
对象名.方法名([参数]) 或 对象名['方法名']([参数])
var 对象名 = {} 对象名.属性名 = 值 对象名.方法名 = function([参数]){ 方法体语句 }
(1)Object:是JavaScript中的超级对象,即用户创建的对象都直接或间接的继承了该对象的某些特性。
(2)创建方式
var 对象名 = new Object();
function 构造方法名([参数]){ this.属性名 = 值 this.方法名 = function([参数]){ 方法体语句; } }
构造方法:是一个初始化对象的方法
var 对象名 = new 构造方法名([参数]);
建议构造方法名的首字母大写
this是关键字,代表当前对象
for(var 遍历名 in 对象名){ 循环体语句 }
'成员名' in 对象名 -->返回一个boolean型的值,'true'表示存在,'false'表示不存在
包含数学常数属性和数学函数
(1)属性
Math.PI:表示圆周率
(2)方法:
Math.abs(x):返回x的绝对值
Math.pow(x,y):返回x的y次方
Math.sqrt(x):返回x的算术平方根
Math.random():返回伪随机数(0.0~1.0之间)
Math.round(x):返回x四舍五入后的最接近的整数
Math.floor(x):返回小于或等于x的最大整数。
Math.ceil(x):函数返回大于或等于x的最小整数
Math.max():返回参数中的最大值
Math.min():返回参数中的最小值
使用new Date()创建对象
(1)构造方法:
A、new Date():无参构造,当前的日期时间
B、new Date(y,M,d,h,m,s):带参的构造,参数是年、月、日、时、分、秒
C、new Date(dateString): 参数是日期字符串
注意:月份的整数值,从 0(1月)到 11(12月)
(2)常用方法
A、获取年份: date.getFullYear():获取4位年份
B、getMonth():获取0~11之间的月份
C、getDate():获取日期(一个月中的第几天)
D、getDay():获取星期几(一周中的第几天)
E、getHours():获取小时数
F、getMinutes():获取分钟数
G、getSeconds():获取秒钟数
H、getMilliseconds() :返回指定日期对象的毫秒数
I、getTime():返回1970-1-1 00:00:00到当前时间之间的毫秒数
J、toDateString():将日期转为字符
K、toLocaleDateString():将日期转换为本地日期格式的字符串
(1)数组类型检测的方法:
instanceof运算符:
isArray()方法:Array.isArray([参数])
(2)数组的遍历
for(var i=0;i<arr.length;i++){ console.log(arr[i]) } for(var k in arr){ console.log(arr[k]) } for(var k of arr){ console.log(k) } arr.forEach(function(t){ console.log(t) }) arr.map(function(t){ console.log(t) })
(3)添加元素
push(参数...):在数组的末尾添加一个或多个元素
unshift(参数...):在数组开头添加一个或多个元素
(4)删除元素
pop():删除数组最后一个元素,若数组为空返回undefined
shift():删除数组的第一个元素,返回数组的第一个元素
(5)排序 :sort()
(6)逆置:reverse()
(7)数组的索引:查找元素在数组中的位置
indexOf([参数]):查找给定值的第一个索引
lastIndexOf([参数]):查找给定值的最后一个索引
(8)数组转换字符
toString():直接转换
join(字符):在转换字符串时,数据之间用给定的字符进行连接