## 一、纯粹的函数调用的 this 指向:
> 这里只讨论纯粹的函数调用。纯粹的函数调用,这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
### 0、全局对象 window 中的 this :
- 我们都知道,window对象是客户端JavaScript程序的全局对象。在全局对象中输入 this, 你会发现:

- 纯粹的函数调用,这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
### 1、 this 和 window 的关系(纯粹的函数调用中):
- 测试代码:
```
function test(){
console.log('我是this',this);
console.log('我是window',window);
}
test();
```
- 图片结果展示:

### 2、变量的打印(纯粹的函数调用中)
#### 2.1 细说第一种情况:
- 测试代码:
```
function test(){
x = 0;
//this.x = 0;
//window.x = 0;
//这三种方式都是定义全局变量,在函数中不使用 var 定义的变量,就是全局变量
}
```
- 图片结果展示:

#### 2.2 细说第二种情况:
- 测试代码:
```
function test(){
x = 0;
// this.x = 0;
// window.x = 0;
// 这三种方式都是定义全局变量,在函数中不使用 var 定义的变量,就是全局变量
console.log('我是x',x)
console.log('我是this.x',this.x);
console.log('我是window.x',window.x);
}
test();
```
- 图片结果展示:

#### 2.3 细说第二种情况:
- 测试代码:
```
var x = 1
function test(){
x = 0;
// this.x = 0;
// window.x = 0;
// 这三种方式都是定义全局变量,在函数中不使用 var 定义的变量,就是全局变量
console.log('我是函数内部的 x',x)
console.log('我是函数内部的this.x',this.x);
console.log('我是函数内部的window.x',window.x);
}
console.log('~~~我是函数执行前的 x',x)
console.log('~~~我是函数执行前的this.x',this.x);
console.log('~~~我是函数执行前的window.x',window.x);
test(); // 调用函数
console.log('***我是函数执行后的 x',x)
console.log('***我是函数执行后的this.x',this.x);
console.log('***我是函数执行后的window.x',window.x);
```
- 图片结果展示:

> 这里只讨论纯粹的函数调用。纯粹的函数调用,这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
### 0、全局对象 window 中的 this :
- 我们都知道,window对象是客户端JavaScript程序的全局对象。在全局对象中输入 this, 你会发现:

- 纯粹的函数调用,这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
### 1、 this 和 window 的关系(纯粹的函数调用中):
- 测试代码:
```
function test(){
console.log('我是this',this);
console.log('我是window',window);
}
test();
```
- 图片结果展示:

### 2、变量的打印(纯粹的函数调用中)
#### 2.1 细说第一种情况:
- 测试代码:
```
function test(){
x = 0;
//this.x = 0;
//window.x = 0;
//这三种方式都是定义全局变量,在函数中不使用 var 定义的变量,就是全局变量
}
```
- 图片结果展示:

#### 2.2 细说第二种情况:
- 测试代码:
```
function test(){
x = 0;
// this.x = 0;
// window.x = 0;
// 这三种方式都是定义全局变量,在函数中不使用 var 定义的变量,就是全局变量
console.log('我是x',x)
console.log('我是this.x',this.x);
console.log('我是window.x',window.x);
}
test();
```
- 图片结果展示:

#### 2.3 细说第二种情况:
- 测试代码:
```
var x = 1
function test(){
x = 0;
// this.x = 0;
// window.x = 0;
// 这三种方式都是定义全局变量,在函数中不使用 var 定义的变量,就是全局变量
console.log('我是函数内部的 x',x)
console.log('我是函数内部的this.x',this.x);
console.log('我是函数内部的window.x',window.x);
}
console.log('~~~我是函数执行前的 x',x)
console.log('~~~我是函数执行前的this.x',this.x);
console.log('~~~我是函数执行前的window.x',window.x);
test(); // 调用函数
console.log('***我是函数执行后的 x',x)
console.log('***我是函数执行后的this.x',this.x);
console.log('***我是函数执行后的window.x',window.x);
```
- 图片结果展示:
