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