本文目录一览:
- 1、javascript的常量相关问题【const】
- 2、js const 和 var 的区别
- 3、js 的 const声明常量不是不能修改吗,为什么循环里面可以修改
- 4、var、let、const三者之间的区别和联系有哪些?
javascript的常量相关问题【const】
如果你看过,并且明白这俩是啥意思,类比到const就行了。
所谓常量的值就是指基本类型常量,而常量指向的值就是指引用类型常量。
常量的意义当然就是值不可变。基本类型常量的值不可变很容易理解,但是对于引用类型常量,这类常量的值也不可变,但是是计算机意义上的值不可变,它本质上的值记录的是所引用数据的内存地址。所以对于这类常量而言,const的效果仅限于引用不可变,但是其实际指向的值是可变的。
举个例子,下面这俩操作,上面是非法的,而下面是合法的:
const obj = {a: 1};
// 非法操作
obj = {a: 2};
// 合法操作
obj.a = 2;
js const 和 var 的区别
const用于定义常量,不可以修改,而且必须初始化。var用于定义变量
js 的 const声明常量不是不能修改吗,为什么循环里面可以修改
for...in每次循环中的value并不是同一个value,
for(const value in iterable){
console.log(value)
}
相当于每次都用const重新定义了一个新的value存储iterable中的值,并打印到控制台上;
如果你这样写就会报错,告知你const不可以修改
const value = 1; //const定义常量必须有默认值
for(value in iterable){
}
var、let、const三者之间的区别和联系有哪些?
var 是es5之前当然之后也可以这么写的写法!
es5之后又细分出了let(变量)const(常量)这两种类型。
但是const的出现也表示js脚本开始走向类如java,c#那种重型语言的编写方式,明确细分了常量和变量。
然后let对比var都是变量(var没有变量常量一说,但ES5之后其行为与let类似),但是,var和let有很大区别,简单理解就是作用域变了,如果你学过后端语言的话,你会知道,使用变量需要先声明在赋值后使用的流程,let继承了这种流程,而var没有,在代码里的体现就是,let只在定义它的上一个大括号内及其所有子方法体起作用,比如方法中定义let则出了这个方法就没法使用到这个let,同级别的两个方法,可以各自定义一个同名let变量。
其实说起来,你可能没有感觉,因为你用var的时候可能也是这么用的,但是let是被严格约束可以这么用,而var其实是无约束的,在某些时候是乱窜。也就是你看到的是你想看的,但它里面的运行不是你所想的!简单来说,var的作用域是混乱的,同父子作用域下var可以被多次定义。而let不能!
const也是继承了后端的常量思想,一旦定义,无法被修改,也不能被修改,也不应该被修改,如果你想改变以上3条中的任何一条,都不要使用const!所以const一般用于存储固定不变的内容,比如系统信息里的名字啊,系统风格啊,审批号啊之类的,不是不能变,而是应该通过人为干预手写的方式来改变其值,不能不应通过代码的方式来赋值(初值除外)!