ECMAScript 变量--var关键字、let声明、const声明

一、var 关键字

语法:

var a = 6;
//声明了变量 a,且初始化为 6

1.1、声明作用域
  • 使用 var操作符定义的变量会成为包含它的函数的局部变量
function test(){
  var a = 6;
  console.log("test()函数内部:",a);//test()函数内部: 6

}
test();
console.log("test()函数外部:",a);//ReferenceError: a is not defined
  • 若是在函数内部声明变量时,忽略了var关键字,变量就成了全局变量,规范在全局作用域中声明
function test(){
  a = 6;//全局变量,不建议这样声明全局变量
  console.log("test()函数内部:",a);//test()函数内部: 6

}
test();
console.log("test()函数外部:",a);//test()函数外部: 6
1-2、var 声明提升(不是变量提升)
function test(){
  console.log("a:",a);//a: undefined
  var a = 6;
}
test();

以上代码等同于:

function test(){
  var a;
  console.log("a:",a);//a: undefined
  a = 6;
}
test();
1-3 var 声明变量时要注意的两点
  1. 第一点:变量连“=”定义。

var a = b = 1;

等于 b = 1;
   var a = b;
会导致:变量的泄露,b 变量 泄露到全局了。

function test (){
  var a = b = 1;
}
test();
console.log('b:',b);
console.log('a:',a);

在这里插入图片描述
2. var 变量作用域不受 块限制

{
  var aa = 1;
  let bb = 1;
}
console.log('a:',aa); // 1 
console.log('b:',bb);  // 报错,not defined

二、let 声明(ES6新增)

2-1、let 声明作用域:块作用域,所以条件声明无效果。
2-2、let 声明不提升

执行报错

function test(){
  console.log("a:",a);//ReferenceError: a is not defined
  let a = 6;
}
test();
2-3、var 与 let 在全局作用域中声明的区别

var 变量会成为 window 对象的属性;而 let变量不会。
在这里插入图片描述

三、const 声明

const 行为 与 let 基本相同,唯一不同的是 它声明的变量时必须同时初始化变量,且尝试修改const变量会导致运行时的错误。

3-1、必须初始化
function test(){
  const a;
  console.log("a:",a);//SyntaxError: Missing initializer in const declaration
}
test();
不允许修改
// const 声明
function test(){
  const a=6;
  a=7;//TypeError: Assignment to constant variable.
}
test();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值