目录
在Java中,let和const 用来声明变量,是声明变量的关键字
用 let 声明变量: 已经声明的变量被再次声明,会出现报错,即let不允许重复声明变量。
Let它的作用范围仅限于声明所在的代码块(通常是一对花括号{}括起来的部分),外部不能使用,类似于局部变量只作用于局部。
用var先打印后定义,会先输出默认自动自定义的undiefind的一个 值。
用let进行先打印后定义,先打印的语句会在运行后报错,所以let必须先定义才能进行后续的操作。
Let从上到下(先声明再进行操作)不会报错,从下到上(先操作后声明)会报错,因为不存在变量提升
即内外块拥有同名变量,会进行划分区域进行管理,如有块区域,变量由块区域内的变量进行管理。
6、不与顶层对象(window)挂钩(与var、const作比较)
Var与顶层对象挂钩,即var定义的a会存在于window,而window里面的a与定义的a一致,返回ture
Let对象不与顶层对象挂钩 ,即window里面不存在 let 定义的b
4、值不允许被修改(常量不可以修改、对象{}、数组[]可以被修改)
-
在Java中,let和const 用来声明变量,是声明变量的关键字
-
一、let声明变量
-
1、不允许重复声明(与 var 作比较)
-
var 声明变量 :已定义的变量会被第二次定义的值覆盖。
- Eg:
-
var a=1; var a=2; //(之前的定义可以重复名字,只会得到最后赋的值) console.log(a);//console.log()---打印
-
用 let 声明变量: 已经声明的变量被再次声明,会出现报错,即let不允许重复声明变量。
- Eg:
-
let a=1;//报错 //Cannot redeclare block-scoped variable 'a'. let a=2;//报错 //Cannot redeclare block-scoped variable 'a'. console.log(a); //值为2
-
2、块级作用域
-
Let它的作用范围仅限于声明所在的代码块(通常是一对花括号{}括起来的部分),外部不能使用,类似于局部变量只作用于局部。
- Eg:
-
{ let a=1; } console.log(a); //运行后网页报错
-
3、不存在变量提升(与 var 比较)
-
用var先打印后定义,会先输出默认自动自定义的undiefind的一个 值。
- Eg:
-
console.log(a);//undiefind var a=1; console.log(a);//1
-
用let进行先打印后定义,先打印的语句会在运行后报错,所以let必须先定义才能进行后续的操作。
-
console.log(b);//会报错, let b=2; console.log(b);//2
-
4、不影响作用域链
-
Let从上到下(先声明再进行操作)不会报错,从下到上(先操作后声明)会报错,因为不存在变量提升
- Eg:
-
let a=1; { console.log(a);//1 console.log(b);//报错 } let b=2;
-
5、暂时性死区(TDZ)
-
即内外块拥有同名变量,会进行划分区域进行管理,如有块区域,变量由块区域内的变量进行管理。
-
Eg:
-
let a=1; {//由第二个 A 管理,先打印会出错 console.log(a);//报错 let a=2; console.log(a);//2 }
-
6、不与顶层对象(window)挂钩(与var、const作比较)
-
Var与顶层对象挂钩,即var定义的a会存在于window,而window里面的a与定义的a一致,返回ture
- eg:
-
console.log(this);//window ----this代表window var a=1;// var 与顶层对象挂钩 console.log(a==window.a);//true ---a==window里面的a
-
Let对象不与顶层对象挂钩 ,即window里面不存在 let 定义的b
- eg:
- l
et b=2;// let 不与顶层对象挂钩 console.log(b==window.b);//false console.log(window.b);//undefined ----因为没有被定义,window里面没有let 定义的b
-
const可以用 this与window挂钩
const a=function(){ console.log(this);//window ---谁用this,this就是谁 } a();
-
二、const声明变量
-
1、声明变量必须赋初始值,与let相同
-
2、标识符(变量名)一般为大写
Eg: Const PI=3.14159; Const MAX_VALUE=100;
-
-
3、不允许重复声明,与let相同会报错
-
4、值不允许被修改(常量不可以修改、对象{}、数组[]可以被修改)
-
属性变量修改值
- Eg:
-
const PI=1.34; //--const 声明变量 PI=10; //报错(不能重复赋值或修改) console.log(PI);
-
-
-
-
数组或对象修改值
- Eg:
-
console.log(a.nameconst a={//--数组、对象可以修改值 name:"张三", age:20 } a.name="李四"
-
-
5、块级作用域,与let相同