js的两种数据类型:
基本类型:string,number,boolean,null,undefined
引用类型:Function,Array,Object
const不能修改的是栈内存在的值和地址。
对于const声明的原始数据类型,一旦声明变不能更改,但是对于引用数据类型,虽然不能重新赋值给某个新的引用类型变量。但是操作操作引用数据类型变量中的元素或者属性却是合法的。因为这些操作不会改变引用数据类型的地址。
基本类型:操作和保存在变量的实际的值
const不可修改声明的基本类型的值
引用类型:保存在内存中,js不允许直接访问内存,在操作的时候,操作的是对象的引用
const可以修改引用类型的引用
基本类型:值不可变
引用类型: 地址不可变
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>const常量不能更改和js的两种数据类型</title>
</head>
<body>
<script type="text/javascript">
// js的两种数据类型
/**
* 基本类型
* string,number,boolean,null,undefined
* 操作和保存在变量的实际的值
* */
/**
* 引用类型
* Function,Array,Object
* 值保存在内存中,js不允许直接访问内存,在操作的时候,操作的是对象的引用
* */
//基本类型
// 基本类型 String
const str = 'ab';
str = 'bc';
console.log(str);// Uncaught TypeError: Assignment to constant variable.
// 基本类型 Number
const num = 1;
num = 2;
console.log(num);// Uncaught TypeError: Assignment to constant variable。
// 基本类型 boolean
const bool = true;
bool = false;
console.log(bool);// Uncaught TypeError: Assignment to constant variable.
// 基本类型 boolean
const nul = null;
nul = 12;
console.log(nul);// Uncaught TypeError: Assignment to constant variable.
// 基本类型 boolean
const undefine = undefined;
undefine = 12;
console.log(undefine);// Uncaught TypeError: Assignment to constant variable.
//=================分割线===================
//引用类型
// 引用类型Object
const obj = {
a:1
}
obj.a = 2;// 修改a
obj.b = 3;// 增加b
console.log(obj.a);// 2
console.log(obj.b);// 3
// 引用类型Array
const arr = [1,2];
arr[0] = 3;// 修改arr[0]
arr[2] = 4;// 增加arr[2]
console.log(arr[0]);// 3
console.log(arr[2]);// 4
// 引用类型Function
function fun() {
this.a = 1;
this.b = 2;
}
const fun1 = new fun();
console.log(fun1.a);// 1
fun1.a = 3;// 修改a
console.log(fun1.a);// 3
fun1.c = 4;// 增加c
console.log(fun1.c);// 4
</script>
</body>
</html>