一、前言
在ES6中函数声明不仅可以使用var声明还可以使用let、const,接下来讨论var、let、const三者的区别。
二、var
使用var关键字声明的变量如果在函数作用域里面,则这个变量时局部变量,如果在任何函数外的顶层,则该变量就是全局变量。
var a = 1; //此处声明的变量a为全局变量
function foo(){
var a = 2;//此处声明的变量a为函数foo的局部变量
console.log(a);//2
}
foo();
console.log(a);//1
如果声明的变量在函数作用域里面没有使用var,则这个变量是全局变量。
var a = 1; //此处声明的变量a为全局变量
function foo(){
a = 2;//此处声明的变量a也是全局变量
console.log(a);//2
}
foo();
console.log(a);//2
三、let
let 声明的变量只在 let 命令所在的代码块内有效。
let 命令
基本用法:
{
let a = 0;
a // 0
}
a // 报错 ReferenceError: a is not defined
let 是在代码块内有效,var 是在全局范围内有效:
{
let a = 0;
var b = 1;
}
a // ReferenceError: a is not defined
b // 1
let 只能声明一次 va