Math.ceil(); 向上取整 Math.ceil(3.1); 输出结果为4
函数的语法
函数声明:
无参数无返回值
function 函数名(){
函数体(具体可执行代码);
}
函数调用:
函数名();
有参数无返回值
function 函数名(形参1,形参2,...){
函数体(具体可执行代码);
}
函数调用:
函数名(实参1,实参2,...);
传参:用实参给形参赋值.
有参数有返回值
function 函数名(形参1,形参2,...){
函数体(具体可执行代码);
return 表达式;
}
function add(num1,num2){
return num1 + num2;
}
函数调用:
函数名(实参1,实参2,...);
var res = add(3,3);
alert(res);
var res2 = add(5,6);
document.write(res2)
内存管理机制:在函数中被声明的变量和形参会在函数被使用中创建和销毁,有效作用范围只在函数大括号中。(校园卡)
就近原则:离哪个作用域近,就使用哪个作用域里的同名变量。
递归:
满足以下三点就是递归:
函数自己调用自己
一般有参数
一般有return
递归可以解决循环能做的所有,一些循环做不了的,递归也能做;
能写,但是不知道为什么对
// 声明数组的三种方式
var arr = new Array(1,2,3);
var arr = Array(1,2,3);
var arr = [1,2,3];
但是当使用前两种 且只有一个数字时 ,则生成数字长度的空数组。
数组和循环之间有点东西的
Math.random() 随机[0,1)
栈结构
栈就是个木盆; 结构是从一头进一头出; 特点是先进后出
push是给数组的末尾添加元素;res返回值为数组长度
格式是: 数组.push(参数一,参数二,...);
pop是从数组末尾取下一个元素
格式是: 数组.pop(); 注意括号中不能有参数
队列结构
结构是从末尾进,从头部出; 特点是先进先出
push是给数组的末尾添加元素;
格式是: 数组.push(参数一,参数二,...);
shift是从数组头部取下一个元素
格式是: 数组.shift(); 注意括号中不能有参数
unshift是从数组头部插入元素
格式是: 数组.unshift(参数一,参数二,...);
数组的方法
concat()方法 拷贝元数组,生成新数组
格式:数组.concat(数组,数组,元素,...); 但是元数组不会变
slice()方法 含头不含尾 [start , end)
格式:数组.slice(start , end);
splice()方法
格式:数组 .splice(数序,长度,添加元素1,元素2,...)
var arr = [10,20,30,40,50,60];
1.删除 var res = arr.splice(1,2);
alert(arr); 输出的是10,40,50,60;
alert(res); 输出的是20,30; (被截取的部分)
2.增加 var res = arr.splice(2,0,"ddddd")
alert(arr); 输出的是10,20,30,ddddd,40,50,60
alert(res); 输出的是空值(因为中间截取的为0)
3.修改 var res = arr.splice(2,1,"ddddd")
alert(arr); 输出的是10,20,ddddd,40,50,60
alert(res); 输出的是30
【引用】
数组,数据的变量储存的是数组的地址