JS的作用域:
局部作用域和全局作用域
局部作用域:
块级作用域 只要有{}都是 包含函数作用域
函数作用域 function
全局作用:
定义再<script> 标签里面
let关键字:
简介:ES6新增的用于变量声明的关键字
作用:
块级作用域有效---{} if{} for(){} function(){}
防止变量提升(没有变量提升)
防止循环变量变成全局变量
let有暂时性死区
注意:
只有let 关键字的变量才有块级作用域,var 没有
const关键字:
简介:ES6新增的用于变量声明的关键字
特点:
声明常量的。就是不能修改(内存地址)的变量
常量必须赋值(初始化)
区别
var | let | const |
---|---|---|
函数作用域 | 块级作用域 | 块级作用域 |
有变量提升 | 没有变量提升 | 没有变量提升 |
可以修改值 | 可以修改值 | 值(内存地址)不能被修改,并且要初始化值 |
let uname;
// if(true){
// let str="姜维";
// console.log(str); //姜维
// if(true){
// let str2="魏延";
// }
// console.log(str2); // is not defined
// }
// console.log(str); //str is not defined
// num=10 //Cannot access 'num' before initialization
// let num;
// for(let i=0;i<2;i++){
// }
// console.log(i); // i is not defined
//暂时性死区
// var num=100;
// if(true){
// let num=200;
// console.log(num); //Cannot access 'num' before initialization
// }
const PI=3.14;
// PI=100; //Assignment to constant variable.(必能被修改)
const ary=[100,200];
//此时我们修改的是ary数组里面元素的值,没有修改ary
ary[0]=1000;
ary[1]=2000;
console.log(ary);
ary=[2000,3000]; //报错