console.log(name);
var name = 'xiaoming';
console.log(name);
以上两个输出分别是什么?为什么?
console.log(name);
let name = 'xiaoming';
console.log(name);
以上两个输出分别是什么?为什么?
console.log(name);
const name = 'xiaoming';
console.log(name);
以上两个输出分别是什么?为什么?
var :声明会提前</br>
let :声明不会提前 限定作用域</br>
const :声明不会提前,常量 声明时必须赋值 赋值后不可变更 不可重新声明 限定作用域
在js里不论是使用var或let来声明一个变量,还是使用const来声明一个常量(不可重复赋值的变量),为了能正确使用它都需要有声明、定义、赋值三个过程。var、let和const的相同之处在于,不论他们在自己作用域里的那个位置,它们对变量的声明都会提前到函数定义的顶部,即声明提前。不同之处在于,var在提前声明以后该变量在整个作用域里都可使用,也叫变量提升。在作用域定义赋值之前它也被认为是存在的,只是值是“undefined”。而let和const声明提前以后不会变量提升,在作用域里定义赋值之前的部分会对该变量形成一个“暂时性死区”,也就是认为该变量不存在,也不可使用。在死区内使用该变量就会报错——即,后两个题目都会报错,并不会输出xiaoming。
网友评论