var aaa;
console.log(aaa);//undefined//-----------------------------------------
var a =1;//全局变量
console.log(a);// 1
function A(){
a=2;
console.log(a);//局部变量a: 2}A();
console.log(a);//调用A函数,a变为函数A内部修改的值:2//---------------------------------------------
var b=1;
var b=2;
console.log(b);//2,后面的声明覆盖了前面的声明
let
1.let是块级作用域,函数内部使用let定义后,对函数外部无影响
2.let定义的变量只能在块作用域中访问,不能跨块访问,更不能跨函数访问
3.不能变量声明提前,否则会报错
4.不能重复定义,否则会报错
let a =1;
console.log(a);// 全局变量1
function A(){
let a =2;
console.log(a);//局部变量:2}A();
console.log("A()函数调用后,let定义的a值在函数内部修改"+a);//1 并不能访问到//---2-----
var b=1;{
let b=2;
console.log(b);// 2}
console.log(b);//1
console.log(aaa);
let aaa=1;//会进行报错,不能变量声明提前
let p =1;
let p =2;
console.log(p);//重复定义,会报错