在js中定义变量有三种方法:var 、let、const;它们之间是有区别的。
###首先是const :
const是定义常量的方法;
1、已经定义,不可改变。(改变值时报错:Assignment to constant variable分配常数变量) const声明中缺少的初始化程序)
2、定义的时候必须初始化。(未初始化时报错:Missing initializer in const declaration
###然后是let:
1、let的作用域是块级的,哪里定义管哪里;
<script type="text/javascript">
let v=3;
(function(){
let v=4;//定义值
console.log(v)//***4***
})()
console.log(v);//***3***
</script>
若是:函数内不定义,改变其值。
<script type="text/javascript">
let v=3;
(function(){
v=4;//改变值
console.log(v)//***4***
})()
console.log(v);//***4***
</script>
2、定义时可不初始化;
<script type="text/javascript">
(function (){
let v;
console.log(v);//undefined
})()
console.log(v)//v is not defined
</script>
3、可改变其值;
<script type="text/javascript">
(function (){
let v =7;
v=10
console.log(v);//10
})()
console.log(v)//v is not defined
</script>
###最后是 var:
1.var 在函数作用域内用var声明是局部变量,不用var声明是全局变量(隐式全局变量)。
2.在全局作用域下用var声明的变量不可以用delete删除,不用var声明的隐式全局变量是可以用delete删除的,据说原因是:隐式全局变量不是一个严格意义上的变量,而是一个属性。真正的变量是不能用delete删除的,而属性是可以删除的。