# 全局变量 #
## 变量提升 ##
变量提升:所有的全局变量的声明全部
会提升到JS 的前端声明处,
也就是说全局变量全部都是先声明的,
并且早于其他所有代码
* 但是变量的赋值位置不会改变
*
# 局部变量 #
* 局部变量就是在函数内部声明的变量
*
* 局部变量的作用域是当前函数的内部
* 在外部是无法访问局部变量的
*
```
//function f(){
// alert(v);
// var v = \"qwe\";
// alert(v); //qwe
//}
//f();
//alert(v);
```
### 全局变量和全局变量 变量重名问题 ###
* 当局部和全局变量重名
* 局部变量的作用域会覆盖全局变量的作用域
*
#### 如何在函数内部去访问同名的全局变量
### window. ##
```
alert(window.)
```
### 块级作用域 P3.10.1 ###
1. JS中不存在块级作用域
2. JS中的作用域是根据函数来划分的
```
var m = 5;
if(m == 5){
var m =10
}
```
## 匿名函数 ##
匿名函数指的是没有函数名的函数
```
function(){
}
```
声明一个函数
```
var f = function(){
alert(\"我是匿名函数\");
}
f();
```
1. 匿名函数除了没有函数名以外,和普通函数没有任何区别
2. 如果想在其他地方调用该函数,则应该声明一个变量,并将这个匿名函数赋值给这个变量
3. 可以将这个变量名作为函数名来调用
传递参数,方法返回值等,
和普通函数是一样的
```
var p = function a(s,n){
return s + n;
}
```
文章没写完,不过正常不会这样写
1. 函数表达式可以储存在变量当中,
2. 变量也可以作为一个函数来使用
3. 将匿名函数作为参数传递给其他函数
```
function fun1(fun){
if(typeof fun ==\"function\"){
fun();
}
}
fun1(function(){
alert(\"这是一个匿名函数\")
});
```
4. 匿名函数经常用于处理某些一次性的内容
5. 没必要单独列出一个函数出来。
6. 现在还比较难理解
## 函数的递归调用 ##
递归是指 在函数的内部调用当前函数
* 自己调用自己
*
* 使用递归的时候要满足以下条件,
* 否则非常用以出现死循环
1. 一定要有结束条件
2. 随着递归的进行,应该逐步靠近结束条
```
function jiecheng(num){
if(num == 1){
return 1;
}
return jiecheng(num - 1)*num;
}
alert(\"5的阶乘\" + jiecheng(5));
```
|
|
|
|
评论
直达楼层