一、块级作用域
javascript
{
let Tim="Tim是靓仔!"
}
console.log("Tim:",Tim)
打印结果: Tim未进行任何定义!
**原因:**因为Tim定义再块级{}里面,它的声音Tim只服务于该块级里面。而打印结果是再块级外面,无法打印出Tim变量。
二、无法重复声明
javascript
let Tim="Tim肯定是一个靓仔!"
let Tim="Tim一条粉肠仔!"
**打印结果:**报错无法重复声明Tim!
**原因:**因为第一条声明已经说明"Tim肯定是一个靓仔!"就不能重复声明Tim是一套粉肠仔了。
三、变量没有提升
javascript
let Tim="我在外面"
funtion(){
console.log("Tim:"Tim)
let Tim="我在块级里面"
}
这种情况是会报错未声明Tim变量,虽然块级里外都声明了Tim变量,但是变量处于块级里面,相当于在块级里面从新开始,无法于外面变量又关联。
正确如下:
javascript
let Tim="我在外面"
funtion(){
console.log("Tim:"Tim)
let Tim="我在块级里面"
}
**打印结果:**Tim:我在块级里面
四、不与顶层对象挂钩
javascript
let Tim = "我是Tim"
console.log(window.Tim)
**打印结果:**undefined
五:额外例子
为什么ES6会出现let呢?
举例1:
javascript
funtion(){
var Tim="我在块级里面"
}
console.log("Tim:"Tim)
var不区分块级内部,很容易导致数据污染,没有层次分明。
举例2:
javascript
var Tim;
console.log("var:", Tim); // 输出: var: undefined
Tim = "我是Tim";
console.log("var:", Tim); // 输出: var: 我是Tim
举例3:
javascript
var Tim = "我在块级外面";
function testFunction() {
var Tim = "我在块级里面";
}
testFunction(); // 这将执行函数,但不会返回或打印任何内容
console.log("Tim:", Tim); // 这将打印全局作用域中的Tim变量的值
打印结果:Tim: 我在块级外面