js中var和let共同点和不同点
说明
let和var是JavaScript中用于声明变量的关键字,它们在一些方面有共同点,但也存在一些重要的区别。
共同点
- 变量声明:无论是'let'还是'var',都用于声明变量,使得我们可以在代码中存储和操作数据。
- 赋值:无论是'let'还是'var'声明的变量,都可以通过赋值来存储数据。
不同点
作用域
-
‘let’具有块级作用域(block scope),它在声明的块(花括号'{}'内)中可见。
-
‘var’具有函数作用域(function scope),它在声明的函数体内可见。
变量提升
- var声明的变量会被提升到它们所在的作用域的顶部,可以在声明之前使用,但值为undefined。
- let声明的变量也会被提升,但在声明之前访问会触发暂时性死区(Temporal Dead Zone,TDZ)错误。
重复声明:
- 在同一作用域内,使用'var'可以重复声明同名变量,后面的声明会覆盖前面的。
- 使用'let'在同一作用域内重复声明同名变量会导致错误。
全局对象属性:
- 使用var声明的变量会成为全局对象(例如浏览器环境下的window对象)的属性,可以通过全局对象访问。
- 使用let声明的变量不会成为全局对象的属性,不会污染全局命名空间。
循环中的行为:
- 在for循环中使用var声明的变量在循环体外也是可见的,可能会导致意外行为。
- 在for循环中使用let声明的变量在循环体内有块级作用域,不会在循环体外部可见
function example() {
for (var i = 0; i < 5; i++) {
// ...
}
console.log(i); // 输出 5,var 具有函数作用域
for (let j = 0; j < 5; j++) {
// ...
}
// console.log(j); // 报错,j 不在作用域内
}
本文作者:不会笑的孩子
本文链接:https://www.cnblogs.com/doubleconquer/p/17638091.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用