1.const变量

本文详细介绍了ES6中的const变量,强调了其声明时必须赋值且不可重新赋值的特性,建议在开发中优先使用const以保持数据的不可变性。同时,文章解释了const对于对象类型的变量,其实保证的是引用地址不变,而非对象内容。在for循环中禁止使用const,但在for...in循环中可以。最后,文中提醒开发者注意const变量在对象属性修改和内存地址变化方面的区别。

ES6中 const变量简单介绍

const和let完全相同,仅在用const声明的变量

  1. 必须在声明时赋值

  2. 而且不可以重新赋值。

  3. const是一个不会变化的常量

实际上,在开发中,应该尽量使用const来声明变量,以保证变量的值不会被随意篡改。
1.根据经验,在开发中的很多变量,都是不会更改的,也不应该更改的
2.后续的很多框架或者是第三方JS库,都要求数据不变,使用常量可以一定程度上保证这一点。

const name = "老张";
// name = "老刘";报错,更改name的值
// const name;报错,重新赋值
const SEX = "男";
console.log(name);
console.log(SEX);

注意一
1.常量不可变,是指声明的常量的内存空间不可变,并不保证内存空间中的地址指向其他空间不可变

//我如果声明一个对象,那么他的内存空间不可变但是地址是可以变的
	const a = {
		name: '123';
	}
	a.name = 'abc';//给a.name赋值是可以的
	console.log(a.name);//正常输出

分析图
const 处理对象

  1. const 实际上保证的不是值不能改变,而是保证的变量所指向的内存地址不能改变
  2. 对象类型的数据会在内存中开辟一个空间,返回内存地址给到变量,对象内部的海事局是可变的
  3. 但是给变量如果再次赋值给表的对象就会报错
const  obj = {};
obj.name = "admin";
obj.age = 20;
console.log(obj);
/*obj内部可以随便赋值更新,但是obj后面跟括号就不行*/

注意二
在for循环中不允许使用常量const,但是在for in循环中可以使用
因为在for循环中i是要进行改变的是同一个作用域下
而在for in循环中是创建多个作用域进行操作的所以是可以使用的

### C/C++中const变量的含义及其用法 #### 1. const变量的定义 在C/C++中,`const`关键字用于声明一个常量,表示该变量的值在其生命周期内不可被修改。`const`为“constant”的缩写,意为不变的或不易改变的。通过使用`const`,可以限定一个变量不允许被修改,从而提高程序的安全性和可靠性[^3]。 例如: ```cpp const int a = 10; // 声明一个整型常量a,其值为10 ``` 在此例中,`a`是一个`const`变量,其值在初始化后不能被修改。 #### 2. const变量的作用 `const`变量的主要作用是确保变量的值不会被意外修改,从而增强代码的安全性。此外,`const`变量还可以替代宏定义,提供更好的类型检查和调试支持[^5]。 - **安全性**:`const`限定符可以防止变量被意外修改,减少程序中的潜在错误。 - **可读性**:通过标识某些变量为`const`,可以让代码的意图更加清晰。 - **效率**:编译器可以根据`const`变量的特性进行优化,提升程序性能。 #### 3. const变量的用法 `const`可以用于修饰各种类型的变量,包括基本数据类型、对象、指针等。以下是几种常见的用法: - **修饰基本数据类型** `const`可以用于修饰基本数据类型,如`int`、`float`、`char`等,确保这些变量的值不可被修改。 ```cpp const float pi = 3.14159; // 定义一个浮点型常量pi ``` 在此例中,`pi`的值在初始化后不可被修改[^2]。 - **修饰指针** `const`可以用于修饰指针,限制指针本身的修改或指针所指向内容的修改。具体有以下几种情况: - 指针本身不可修改: ```cpp int x = 10; int* const ptr = &x; // 指针ptr本身不可修改,但可以通过ptr修改x的值 ``` - 指针所指向的内容不可修改: ```cpp const int y = 20; const int* ptr2 = &y; // 指针ptr2所指向的内容不可修改 ``` - 指针本身和所指向的内容均不可修改: ```cpp const int z = 30; const int* const ptr3 = &z; // 指针ptr3本身和所指向的内容均不可修改 ``` - **修饰类成员** 在类中,`const`可以用于修饰成员函数或数据成员,确保它们的行为符合常量的语义。 - **常量成员函数**:`const`修饰的成员函数保证不会修改类的数据成员。 ```cpp class Example { public: int getValue() const { return value; } // 常量成员函数 private: int value; }; ``` - **常量数据成员**:`const`修饰的数据成员在构造时初始化后不可被修改。 ```cpp class Example { public: const int data; Example(int d) : data(d) {} // 构造函数中初始化常量数据成员 }; ``` #### 4. const与宏定义的区别 `const`变量相比传统的宏定义(如`#define`),具有更强的类型安全性和调试能力。宏定义仅仅是在预处理阶段进行简单的文本替换,缺乏类型检查,容易引发错误。而`const`变量则由编译器管理,能够提供更严格的类型检查和错误提示。 例如: ```cpp #define PI 3.14159 // 使用宏定义 const double PI = 3.14159; // 使用const变量 ``` #### 5. 示例代码 以下是一个综合示例,展示`const`在不同场景下的用法: ```cpp #include <iostream> using namespace std; class ConstExample { public: const int constantValue; // 常量数据成员 ConstExample(int val) : constantValue(val) {} void printConstant() const { // 常量成员函数 cout << "Constant Value: " << constantValue << endl; } }; int main() { const int a = 10; // 基本数据类型常量 const double pi = 3.14159; // 浮点型常量 int x = 20; const int* ptr = &x; // 指向常量的指针 *ptr = 30; // 错误:不能通过ptr修改x的值 ConstExample obj(42); obj.printConstant(); // 调用常量成员函数 return 0; } ``` ### 注意事项 - `const`变量必须在定义时初始化,因为它的值在其生命周期内不可被修改。 - 对于`const`修饰的指针,需要明确是指针本身不可修改还是指针所指向的内容不可修改。 - 在类中使用`const`时,需注意构造函数中的初始化列表[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值