当前位置: 首页 > news >正文

js中声明变量的关键字(const,let,var)

const

特点:

  • const不允许在同一作用域重复声明,块级作用域
  • 暂时性死区,在声明之前,该变量是不可用的
  • const声明的是一个只读变量,声明之后不能改变其值,一旦声明必须初始化
  • 但是const定义的对象属性是可以修改的

块作用域由{}包括,if语句和for语句里面的{}也输入块作用域

对象是引用类型的,const定义的对象是保存指向对象的指针,这里的“不变”是指对象的指针不变,而修改对象中的属性不会使对对象的指针发生变化。

    const a=3{const a=1console.log(a)//1}{//a是对象,可以修改对象的属性const a={name: 1}console.log(a)//{ name: '1' }a.name=2console.log(a)//{ name: '2' }}console.log(a);//3

var

  • 变量提升,声明的变了会自动提升到他所在作用域的顶部
function fun() {console.log(variable); var variable = "hello";
}
fun(); // 结果是 undefined

因为上面的代码等同于:

function fun() {var variable;console.log(variable); variable = "hello";
}
fun(); // 结果是 undefined
  •  var可以重复声明同一个变量
  • 在使用 var 的时候,最常见的问题就是对迭代变量的奇特声明和修改
for (var i = 0; i < 5; ++i) { setTimeout(() => console.log(i), 0) 
} 
// 你可能以为会输出 0、1、2、3、4 
// 实际上会输出 5、5、5、5、5

let

  • 块级作用域 
  • 不允许在同一个块作用域中重复声明变量
  • 暂时性死区

let和var的区别:

for (var i = 0; i < 5; ++i) { // 循环逻辑 
} 
console.log(i); // 5for (let j = 0; j < 5; ++j) { // 循环逻辑
} 
console.log(j); // ReferenceError: j 没有定义

声明风格

尽量不使用var
const优先,let次之

使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码提前发现不合格的声明。

相关文章:

  • Java 简易版王者荣耀
  • 双11再创新高!家电行业如何通过矩阵管理,赋能品牌增长?
  • C语言--每日选择题--Day27
  • 15 网关实战: 微服务集成Swagger实现在线文档
  • 全新爱蜗影视优码双端影视源码v9.1/影视视频APP源码+支持代理/在线支付+支持对应苹果CMS
  • ubuntu22.04配置shadowsocks
  • 深入redis过程-命令
  • Golang并发模型:Goroutine 与 Channel 初探
  • 接口01-Java
  • Matlab R2022b 安装成功小记
  • 力扣101. 对称二叉树
  • Java中的spring——面试题+答案(Spring Boot)——第20期
  • LeetCode(32)串联所有单词的子串【滑动窗口】【困难】(含图解)
  • 【MATLAB源码-第89期】基于matlab的灰狼优化算法(GWO)无人机三维路径规划,输出做短路径图和适应度曲线
  • 域名和ip的关系
  • python3.6+scrapy+mysql 爬虫实战
  • [译] 怎样写一个基础的编译器
  • Consul Config 使用Git做版本控制的实现
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • javascript面向对象之创建对象
  • maven工程打包jar以及java jar命令的classpath使用
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Unix命令
  • 对JS继承的一点思考
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于组件的设计工作流与界面抽象
  • 排序算法学习笔记
  • 前端技术周刊 2019-02-11 Serverless
  • 如何设计一个微型分布式架构?
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 写给高年级小学生看的《Bash 指南》
  • 学习ES6 变量的解构赋值
  • ​ssh免密码登录设置及问题总结
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #if #elif #endif
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (20050108)又读《平凡的世界》
  • (26)4.7 字符函数和字符串函数
  • (8)STL算法之替换
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (一)基于IDEA的JAVA基础1
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)jQuery 基础
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/fstab和/etc/mtab的区别
  • @Query中countQuery的介绍
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ JavaScript ] JSON方法