作用域
能生效,能执行的区域就叫做作用域,作用域的区域不一样,效果也不一样的
全局作用域和函数作用域
全局作用域
不在函数作用域中创建的变量,生效的区域是在函数作用域之外
<script>
var a=10
console.log(a)
</script>
在全局作用域中创建的变量叫做全局变量
函数作用域
在函数内部作用域中创建的变量,生效执行的区域仅限在函数内部
<script>
var a=10
function add(){
var b=5
console.log(b)
}
console.log(a)
</script>
在函数作用域内部创建的变量叫做局部变量
作用域链
规则
函数作用域是嵌套在全局作用域之中的,函数作用域中,我们也可以在定义一个或者多个函数进行嵌套。这样子的形式我们就称为作用域链
当我们创建并且定义了变量之后,我们想要输出这个变量的时候,我们需要从里到外,依次进行,先在函数内部看看,如果函数内部有已经定义了的变量并且赋值了那么就先用局部的。
但是其实在函数内部也会先进行一次预解析,先把变量和函数表达式提升到当前作用域的顶部,然后按照顺序进行执行,如果当前函数作用域内没有被定义的变量,那么会往上一级找,如果还是没有那么会在上一级找,直到找到全局作用域中,如果全局也没有,那么会在全局进行定义
全局可以用局部的,局部的不能用全局的,自己没有找上一级,上一级没有找全局,全局没有就报错
递归函数
递归函数其实就是自己调用自己
语法
function add(num){
return
}
var str=add(10)
console.log(str)
对象
对象的创建语法,对象的创建都是一对键值对,左边是对象名 右边是键值,右边可以是字符串,也可以是数字,也可以是一个{}大括号包裹起来,里面放入你想要的数据,也可以放入函数表示式.....
var obj="str"
var obj={
name:"ggg"
age:14
}
需要注意的是,里面的键值对,平时的时候可以不带引号,但是特殊情况下必须要有引号,不然会有歧义
还有就是在对象中是没有顺序的
对象里面嵌套方法
对象中值的类型是没有限制的,可以是任意类型。当值不是函数的时候,我们将这个键值对叫做对象的属性,当值是一个函数的时候,我们将这个键值对叫做对象的方法。
事件
事件概念
事件三要素
事件源
事件类型
事件处理程序
<button id="btn"></button>
<script>
btn.事件名=function () {
你要做的事情
}
</script>
事件 | 备注 |
|
| onclick | 当鼠标左键单击 |
| ondblclick | 当鼠标左键双击 |
| onmouseover | 当光标在指定的内容上面 |
| onmouseout | 当光标离开指定的内容 |
| onkeydown | 当键盘按下的那一刻 |
| onkeyup | 当键盘抬起的那一刻 |
| onfocus | 当输入框得到焦点 |
| onblur | 当输入框失去焦点 |
| onchange | 当指定的标签里面内容有变化的时候 |
| onsubmit | 提交事件 |
| onload
注意:如果给事件赋值函数名,千万不能加小括号调用
事件还可以写在行内:
<button onclick="console.log('点击了按钮')">按钮</button>
<button onclick="fn()">按钮</button>
<script>
function fn(){
console.log('点击了按钮')
}
</script>
注意:在行内的事件中调用函数一定要加小括号调用才行