js 中新建一个变量this.xx 和let有什么区别
时间: 2023-12-16 16:02:27 浏览: 34
在JavaScript中,使用关键字`this`定义的变量是一个指向当前对象的指针,可以用来访问对象的属性和方法。而使用`let`定义的变量则是块级作用域的变量,只能在当前作用域内访问。
具体来说,当我们在一个对象方法中使用`this.xx`定义一个变量时,这个变量会成为该对象的属性,可以在整个对象中访问。而使用`let`定义的变量则只能在当前代码块中访问,如果在代码块外访问`let`定义的变量,则会出现`ReferenceError`错误。
举个例子,假设我们有一个对象`person`,包含属性`name`和方法`sayName`,现在我们想在`sayName`方法中定义一个变量:
```javascript
const person = {
name: 'Alice',
sayName() {
this.age = 20; // 定义一个对象属性
let message = 'My name is ' + this.name; // 使用 let 定义一个变量
console.log(message);
}
};
person.sayName(); // 输出 "My name is Alice"
console.log(person.age); // 输出 20
console.log(message); // 抛出 ReferenceError 错误,因为 message 只在 sayName 方法中定义
```
在上面的代码中,我们使用`this.age`定义了一个对象属性,在`sayName`方法中可以直接访问该属性。而使用`let`定义的变量`message`只能在`sayName`方法中访问,如果在方法外访问该变量,则会出现`ReferenceError`错误。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)