arguments:(当实参不确定时,形参不知定义多少个时,用arguments去接收实参)
①arguments只能在函数体内部使用;
②arguments代表的是实参副本;
③arguments长得和数组很像,但是不是真正的数组,叫类数组;
有下标,下标从0开始;
通过[下标]去取下标对应的值:arguments[下标];
arguments.length代表实参的个数;
作用域:变量可访问的范围(起作用的范围)
1、全局作用域:全局变量;
①在函数外部定义的变量;
②在函数内部没有var定义的变量;
③全局变量的作用范围:整个程序,从全局变量的声明开始到程序结束,变量均有效。
2、局部作用域:(私有作用域)局部变量:
①在函数内部明确通过var定义的变量;
②局部变量的作用范围为函数体内部,函数调用完成后,变量自动就销毁;
③所有的形参都是局部变量
变量提升(预解析):
JS引擎在执行的时候,会把函数和所有变量的声明都提升到当前作用域的最上面,在js代码执行之前,浏览器的解析器在遇到var变量名和function整个函数会将其提升到当前作用域的最前面;
js中只要有一处报错,下面的代码就不会执行了。
函数在全局作用下会变量提升,但是函数里的变量不会变量提升;只有在函数执行的时候,函数里面才会变量提升,并且遵循以下几点:
①形参赋值;
②变量提升;
③代码从上到下执行。
函数名相同,后面的函数会把前面的函数给覆盖;
变量提升时,如果变量和函数同名,则保留函数;
函数的递归调用:
递归调用:函数自己调用自己;
递归的本质:循环;
function fac(n){ //任意一个数的阶乘 n 初始值
if(n == 1){
//条件 终值;
return 1;
}else{
return n * fac(n - 1) //n-1为步长
}
}
事件:对元素的操作;
函数与事件的关系:所有的事件都会依赖函数执行。
标签(元素).事件 = function(){
}
事件的三要素:
①事件源:是一个名词;
②事件:是一个动词;
③事件处理程序:函数;
oBth 事件源;onclick 事件;function 事件处理程序;
oBth.onclick = function(){
}
事件种类:
①页面事件:onload 页面加载事件(页面打开后执行);onunload 页面卸载事件(页面关闭时执行)
②鼠标事件:onclick 单击;ondblclick 双击;onmousedown 按下;nomouseup 抬起;onmouseover 移入(悬停);onmouseout 移出;onmouseenter 移入;onmouseleaver 移出;onmousemove 移动;oncontextmenu 右键单击
③键盘事件:onkeyup 抬起;onkeydown 按下;onkeypress 按下+抬起
④其他事件(一般用于表单):onsubmit 表单提交事件(一般用于表单验证);onchange 改变(一般用于下拉列表);onblur 失去焦点;onfocus 获取焦点
事件应用:事件源.事件 = function(){
}
如何操作页面元素:
操作样式:页面元素.style.样式=值;
操作内容:
操作表单:页面元素.value=值 //属性操作
操作非表单:页面元素.innerHTML=值
操作标签属性:<img src="">
页面元素.属性=值