let
ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
分别用let和var声明了两个变量,两个变量在同一个代码块中,所以打印为7
var a=3;
let b=4;
console.log(a+b);//7
1------let 定义一个有范围的变量。不是window的属性
let a=3;
console.log(window.a);//undefined
2------let 定义的变量仅限于循环及花括号语句块内
(1)--------
for(let i=0;i<10;i++){
sum+=i;
}
console.log(sum,i);//ReferenceError: i is not defined
(2)---------------
let a=3;
function fn(){
let b=5;
console.log(a);//3
if(b<10){
let a=20;
// let定义的变量仅作用于语句块内
console.log(a);//20
}
console.log(a);//3
}
fn();
(3)---------不能在函数中用this调用let定义的全局变量
let a=20;
function fn(){
let a=10;
console.log(this.a)//undefined
}
fn();
const 常量
const是不可以被修改的
不能修改引用地址,但是可以修改对象属性
对象定义为常量,不能清除const的作用域与let命令相同:只在声明所在的块级作用域内有效。
----------不能修改引用地址,将对象定义为常量不能清除
const obj={
a:1,
b:2,
}
obj.a=10;//不可以修改