变量声明
let(相当于之前的var)
let注意事项:
- 1.没有预编译,不存在变量提升
- 2.在代码块内,在let定义变量之前就是用变量会报错。先定完才能使用
示例:
alert(a);
let a = 15;
//报错
- 3.同一个作用域里面,不能重复定义变量
let a = 15;
let a = 14;
//这样写会报错
- 4.for循环,for循环里面是父级作用域,{}里面又是一个作用域
let arr = [];
for (let i = 0; i < 5; i++) {
arr[i] = function() {
console.log(i);
}
}
arr[3]();
//3
//如果将let换成var,结果为5
const(常量,定义好了不能改变)
const注意事项:
- const定义的变量不能修改
- const定义完变量必须有值,不能后赋值,也不能修改
const a;
a = 2;
console.log(a);
//会出现语法错误
- 如果用const定义一个对象(数组),对象里面的值是可以修改的,因为js中无论是数组还是对象,传值方式都是引用传递
块级作用域
{
//块级作用域
}
(function(){
//TODO
})()
//块级作用域的功能就相似于于立即执行函数的功能
{
{
{
{
{
let b = 2;{
{
{
{
{
{
let b = 1;}}}}}}}}}}}
//这两个b相互之间不会影响
像if(){},for(){},while(){}这些都有两个作用域()里面和{}里面