一、ES6-let声明变量【解刨分析最详细】

一、块级作用域

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: 我在块级外面

相关推荐
程序员黑豆6 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊7 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃7 小时前
前端转全栈学习路线
前端·学习
浮生望7 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry8 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
上海安当技术10 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队10 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_4316004411 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
avi911111 小时前
[AI教做人]AI平台做2项目;一个3D模型展示,另一个框架多人
javascript·人工智能·ai·3d模型·3d引擎·顶点和法线
kyriewen12 小时前
我用Claude Code两天干完了团队两周的排期——周报发出去那一刻我就后悔了
前端·javascript·ai编程