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

相关推荐
小周同学@1 小时前
谈谈对this的理解
开发语言·前端·javascript
Wiktok1 小时前
Pyside6加载本地html文件并实现与Javascript进行通信
前端·javascript·html·pyside6
一只小风华~2 小时前
Vue:条件渲染 (Conditional Rendering)
前端·javascript·vue.js·typescript·前端框架
柯南二号2 小时前
【大前端】前端生成二维码
前端·二维码
程序员码歌2 小时前
明年35岁了,如何破局?说说心里话
android·前端·后端
博客zhu虎康3 小时前
React Hooks 报错?一招解决useState问题
前端·javascript·react.js
灰海3 小时前
vue中通过heatmap.js实现热力图(多个热力点)热区展示(带鼠标移入弹窗)
前端·javascript·vue.js·heatmap·heatmapjs
王源骏4 小时前
LayaAir鼠标(手指)控制相机旋转,限制角度
前端
大虾写代码4 小时前
vue3+TS项目配置Eslint+prettier+husky语法校验
前端·vue·eslint
wordbaby4 小时前
用 useEffectEvent 做精准埋点:React analytics pageview 场景的最佳实践与原理剖析
前端·react.js