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

【vue-小知识】var、let 和 const之间的区别

文章目录

  • 结论
  • 1、重复定义变量名
      • var:允许重复定义变量名
      • let和const:不可以重复定义变量名
  • 2、修改值
      • var:允许修改值
      • let:允许修改值
      • const:不允许修改值,会报错
  • 3、变量提升
      • var : 支持变量提升
      • let和const:不支持,会报错
  • 4、作用域
      • var : 全局变量
      • let: 局部变量
      • const: 声明常量不能进行修改

结论

  • 根据实际场景使用: 最小粒度使用命令
重复定义修改值变量提升(先使用后定义)作用域
var允许允许允许全局
let-允许-局部
const (常量)---

主要从

  • 是否可以重复定义变量名
  • 是否允许修改值
  • 是否具有变量提升
  • 作用域

这四个方面来进行介绍。

1、重复定义变量名

var:允许重复定义变量名

我先定义一个变量a,给它附上一个初始值,我们打印一下结果
之后我们对这个变量进行重复的定义,再打印一下结果
发现初始值被覆盖了

所以说var是可以重复定义变量名的。

let和const:不可以重复定义变量名

直接就报错了

2、修改值

var:允许修改值

首先我们定义一个变量给它附上一个初始值,然后对这个变量附上一个新的值。
我们打印一下这个变量的值,发现这个变量的值的确被修改了

let:允许修改值

const:不允许修改值,会报错

这是因为const所定义的变量是常量,是不允许被修改的。

3、变量提升

  • 通常:先定义变量,然后再去使用变量

  • 变量提升:可以让你先使用变量,之后再去定义变量

var : 支持变量提升

在使用a变量之前并没有定义这个变量.
是在使用之后才进行定义的。
但是整个代码依然能够运行。
但是它的结果似乎和我们的预期不太一样,它的结果是undefined。

  • 可以理解为做了如下的处理

这就是变量提升,是var所定义的变量特有的。

let和const:不支持,会报错

4、作用域

var : 全局变量

  • 默认全局变量
  • 缺省的定义是全局变量
var hw = 'hello word';
console.log("hw=" + hw);
hwAll = "hello All";
console.log("hw=" + hw);
for (var index = 0; index < 1; index++) {var inCon = "inCon";console.log("index" + index+",hw=" + hw + ",inCon="+inCon);
}
console.log(",inCon="+inCon);

let: 局部变量

  • 仅在方法内有效
for (let index = 0; index < 1; index++) {let inConLet = "inConLet";console.log("index" + index+",hw=" + hw + ",inConLet="+inConLet);
}
  • 如果不在作用域会报异常
D:\vuecode\es6\hw.js:20
console.log(",inConLet="+inConLet);^ReferenceError: inConLet is not definedat Object.<anonymous> (D:\vuecode\es6\hw.js:20:26)at Module._compile (internal/modules/cjs/loader.js:1158:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)at Module.load (internal/modules/cjs/loader.js:1002:32)at Function.Module._load (internal/modules/cjs/loader.js:901:14)at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)at internal/main/run_main_module.js:18:47

const: 声明常量不能进行修改

  • 声明常量不能进行修改
for (let index = 0; index < 1; index++) {let inConLet = "inConLet";console.log("index" + index+",hw=" + hw + ",inConLet="+inConLet);
}
  • 如果不在作用域会报异常
TypeError: Assignment to constant variable.at Object.<anonymous> (D:\vuecode\es6\hw.js:25:5)at Module._compile (internal/modules/cjs/loader.js:1158:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)at Module.load (internal/modules/cjs/loader.js:1002:32)at Function.Module._load (internal/modules/cjs/loader.js:901:14)at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)at internal/main/run_main_module.js:18:47
http://www.lryc.cn/news/323119.html

相关文章:

  • 24.3 分布式综合应用
  • Android学习进阶
  • “低代码+平台”:驱动企业数字化转型与创新的新引擎
  • python代码截取任意页的pdf
  • 速盾:cdn加速后真实ip会暴漏吗?
  • ATA-5310前置微小信号放大器在红外线传感器中的应用
  • 【黑马程序员】Python多任务
  • 前端与后端具备能力的区别
  • 【蓝桥杯】第15届蓝桥杯青少组stema选拔赛C++中高级真题答案(20240310)
  • 20240319金融读报:金融助力农业科创企业风控模型
  • React.js快速入门教程
  • Jenkins构建时报错:Build step ‘Execute shell‘ marked build as failure
  • C语言复杂度(个人笔记)
  • 与AI机器共存的三个层次
  • python网络爬虫实战教学——requests的使用(1)
  • 腾讯云COS - 前端上传文件到 COS 跨域问题
  • 【笔记】Python学习记录
  • 力扣每日一题 2024/3/21 频率跟踪器
  • 基于SpringBoot 实现指标监控及日志管理
  • Linux之看门狗
  • 第十九章 TypeScript 装饰器Decorator
  • 第十四章 TypeScript tsconfig.json配置文件
  • 科技助力高质量发展:新质生产力的崛起与企业数字化转型
  • Redis - 缓存访问 缓存穿透 缓存击穿 缓存雪崩
  • SAP Business Application Studio(BAS)中开发Fiori App的基础知识
  • DashScope - 阿里模型服务灵积
  • 个人信息-求职[web前端]
  • Apache DolphinScheduler 社区开启讲师招募,赶快加入吧!
  • 【HTML面试题】src和href的区别
  • 电脑文件msvcp100.dll丢失原因,如何快速修复msvcp100.dll