知识点
函数:
1.封装性,2.复用性,3.调用性,4.函数名使用小驼峰命名(首字母不要大写)
函数的形参:是指函数声明时的参数,是用来接受实参的,本质上是局部变量。
函数的实参:函数调用时的参数。
函数的返回值:return 返回一个函数结果,结束整个函数。
函数的作用域: 就是起作用的范围。或者说有效范围。
局部变量:局部变量就是定义在函数内部的变量,这个变量只能在函数内部使 用,即作用域范围只是函数内部,另外,形参也是局部变量。
全局变量:全局变量就是定义在函数外部的变量,这个变量在任何函数中都有 效,即作用域范围是当前文件的任何地方。
函数的预编译:函数可以先调用后声明
arguments 用于接受实参列表(伪数组)
递归函数:自己调用自己
构造函数:创建对象
回调函数:把一个函数当做另一个函数的参数
数组
数组的创建方式: var arr = 【】 newArray(1,2,0,3,5)
数组的长度:length属性,数组元素的个数
数组的下标:下标就是索引,即元素的序号,从0开始,下标最大取值是:长度-1;下标可以是变量或表达式。
数组的长度和值可以随时被更改。
数组的遍历:for ,for in,for of
for in:遍历下标,主要是用于遍历对象(不适合数组)
for of:遍历值
数组的封装
数组的方法
unshift() 向数组的头部追加值
shift() 向数组的头部删除一个值
push()向数组尾部追加值,遍历arguments,把数组的长度变长
arr[arr.length] = arguments[i]
pop()删除数组中最后一个值,创建一个新的数组,遍历原数组时丢掉最后一个
i < arr.length - 1
join() 把数组变成字符串
(三目运算符) i < arr.length - 1 ? arr[i] + ',' : arr[i];
includes() 判断数组中是否存在一个值,(与质数判断的假设法相对比,判断flag为true还是false)
indexOf() 判断数组中是否存在某个值,返回第一次出现的下标,找不到就返回-1
lastIndexOf() 判断数组中是否存在某个值,返回最后一次出现的下标
concat() 拼接数组,返回一个新的数组
slice(i,i) 截取数组中的部分值,返回一个新的数组
splice(i , 删除的个数 , 新增的值...) 新增,删除,替换 --- 直接改变原数组 !!!!!!!
判断数组
数组属于引用数据类型 Array.isArray() 判断是不是数组
数组的迭代
sort() ASCII升序
forEach(function(v,i,arr){}) 遍历数组
map(function(v,i,arr){}) 改变数组中的值,返回一个新的数组 必须return
filter(function(v,i,arr){}) 过滤器,找到满足条件的值,返回一个新的数组
every(function(v,i){}) 判断数组中是不是每一个值都满足条件
some(function(v,i){}) 判断数组中有没有满足条件的值
随机验证码
随机验证码,必须同时包含小写,大写和数字
1.先创建一个随机数
function rand(min , max) {
return parseInt(Math.random() * (max - min) + min)
}
2.由于结果是数组,要把数组转化为字符串
function join(arr , f) {
var res = '' ;
for(var i = 0 ; i < arr.length ; i++) {
res += i < arr.length - 1 ? arr[i] + f : arr[i]
}
return res
}
3.需要4位数验证码
function randCode(n) {
// 默认4位
n = n || 4 ;
var arr2 = [] ;
var numArr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var bigArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] ;
var smallArr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] ;
var allArr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] ;
// 从数字中拿取一个
arr2.push(numArr[rand(0,numArr.length)]) ;
// 从大写中拿取一个
arr2.push(bigArr[rand(0,bigArr.length)]) ;
// 从小写中拿取一个
arr2.push(smallArr[rand(0,smallArr.length)]) ;
// 从所有的拿取一个
arr2.push(allArr[rand(0,allArr.length)]);
//这时的随机数已经生成了,但是,是按照数字、大写字母、小写字母、随机值排列的
// 打乱顺序,随机交换每个位置上的值
for(var i = 0 ; i < arr2.length ; i++) {
var j = rand(0 , arr2.length) ;
var t = arr2[i] ;
arr2[i] = arr2[j] ;
arr2[j] = t ;
}
//返回数值
return join(arr2 , '') ;
}
var res = randCode();
document.write(res);