在javascript中有三种声明变量的方式:var、let、const
*var:全局变量
也就是无论你在哪里 用 var来声名变量,在其他任何地方都可以访问!
举个栗子
注意点:在函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明的是一个全局变量!
var i=0
function show (){
console.log(i)
}
show();
for(var i=0;i<10;i++){
var a=3+i
}
console.log(a)
if(true){
b=3+i
}
console.log(b)
.
.
.
另外,说下var 变量提升问题:
console.log(i) //这里直接报错
i=0
console.log(i)//这里会是 undefined
var b=1
第二个的原因就是 var 的提升优先级特点
解析下:
console.log(i)
var b=1
1.var b
2.console.log(b)
3. b=1
所以会是undefined
let:局部变量
也就是只能在本区域调用它
举个栗子
1.局部变量
function show (){
let a=1
console.log(a) //a=1
}
show()
console.log(a) //a is not defined
for(var i=1;i<10;i++){
let b=2+i
console.log(b)// 3456789
}
console.log(b) //a is not defined
2.变量不提升
function show (){
console.log(a) //a is not defined 直接报错
let a=1
}
show()
3.不能重复声名
function show (){
let a=1
let a=3
console.log(a) //a is not defined 直接报错
}
const :声名常量
(一旦声明,其值就不可以更改,而且必须初始化。如果你非得修改变量的值,js不会报错,只是默默表示失败(不起作用)
举个栗子
const a=1
if(true){
a=a+1
}
console.log(a)
const b='s'
if(true){
b=b+1
}
console.log(b) // 直接报错 Assignment to constant variable.
const c;
console.log(c) //直接报错 Missing initializer in const declaration