作用域
作用域分两种:
全局作用域:
全局函数和全局变量
函数作用域:
局部变量和局部函数
注意:
局部可以使用全局的,但是全局不能使用局部的,优先使用局部的,局部没有找全局,全局没有的话就报错
千万不要在函数中对着未声明的变量赋值 -- 会导致全局污染:全局本身没有这个东西,但是函数作用域却给他添上了
如果局部a=2,而局部没有声明a 全局也没有声明a 那么调用局部函数的话 在全局输出的话,这个时候就被污染了 所以输出的值是2
递归
语法:
function 函数名(形参){
判断条件
要反复执行调用的代码段 函数名(条件)
}
var 变量名=函数名(实参)
console.log(变量名)
理解:
其实简单来说递归就是在函数中再一次调用了函数自己,但是迟早会停止下来
何时使用:
专门用于遍历层级不明确的情况
可以简单的举例为:
进->进->进->进->进->进->判断条件(成立)出->出->出->出->出->出
对象
对象:是一种比较复杂的对象 因为其他数据都是一个内存,存储一个数字,而对象是一个内存空间存储多个数据
定义对象,就相当于在内存中开辟空间,将这个空间划分为多个小空间,每个小空间都有自己的名字
语法:
var 对象名={键值对,键值对,.....}
注意:
对象中的键是唯一的,不可以重复的
遍历对象就是将对象中的每个键值对都经历一次
语法:
for(var 变量 in 对象){
变量 -- 代表对象中的每个键
}
注意:当使用变量代表键的时候,不能使用 . 的语法了
事件
事件指用户在网页的行为
语法:
标签名.on事件类型=函数的值
事件类型:
鼠标左键单击 - click
鼠标左键双击 - dblclick
鼠标移入事件 - mouseover
鼠标移出事件 - mouseout
键盘按下 - keydown - 通常在项目中不用
键盘弹起 - keyup - 用的比较多
获取焦点 - focus
失去焦点 - blur
改变事件 - change
提交事件 - submit
针对整个浏览器的加载事件 - load