首页 > 其他分享 >var , let , const 区别

var , let , const 区别

时间:2024-04-08 13:34:36浏览次数:10  
标签:const log 作用域 let var console

1. 作用域

letconst 存在块级作用域, var 不存在块级作用域

for(var i = 0 ;i<5;i++) {
  setTimeout(()=> {
    console.log(i)
  })
}
// 输出 5, 5, 5, 5, 5 

for(let i = 0 ;i<10;i++) {
  setTimeout(()=> {
    console.log(i)
  })
}
// 输出 0, 1, 2, 3, 4 

2. 重复声明

同一作用域下,var 允许重复声明,letconst 不允许

var a = 1
var a = 2
let a = 3 // SyntaxError: Identifier 'a' has already been declared

3. 变量提升与暂时性死区

var 变量的声明会提升至当前作用域顶端

console.log(a) // undefined
var a = 1

// 以上声明等价于
var a;
console.log(a) // undefined
a = 1

let 与 const 声明会放在TDZ(temporal dead zone)即暂时性死区中,只有完成执行TDZ中的变量才会将其移出,在此之前访问变量会抛出错误.

console.log(typeof a)  // undefined
// 未定义的变量使用 typeof 访问并不会抛出错误
console.log(typeof a) // ReferenceError: Cannot access 'a' before initialization
let a = 1

4. var 会覆盖 window 对象上的属性

var a = 1
let b = 2
const c = 3
window.a // 1
window.b // undefined
window.c // undefined

5. const 声明必须初始化,且值不可改变

const a // SyntaxError: Missing initializer in const declaration
const a = 1
a = 2  // TypeError: Assignment to constant variable.

标签:const,log,作用域,let,var,console
From: https://www.cnblogs.com/qingzhao/p/18120929

相关文章

  • Const关键字介绍
    Const关键字用于**声明一个常量或限制变量的修改**,确保其值不被改变。具体来看:1.**定义常量**:使用const关键字可以将变量定义为常量,这意味着一旦赋值后,其值就不允许再被修改。2.**修饰类成员函数**:在C++中,const可以用于修饰类的成员函数,表明该函数不会修改类的任何成员变量......
  • node 建立一个electron的hello world 的工程 有窗体const { app, BrowserWindow } = r
     要创建一个Electron的"HelloWorld"工程,可以按照以下步骤进行:首先,确保你已经安装了Node.js。使用命令行工具进入你要创建项目的目录。运行以下命令来初始化一个新的Node.js项目:bash|npminit-y这将创建一个默认的package.json文件。确保你......
  • eletron主进程和窗口的互相通信
    窗口和渲染进程是相同的东西窗口向主进程传输数据渲染进程传值window.electron.ipcRenderer.invoke('aaa',{a:1,b:2});主进程接收-------数据写在createWindow函数后面的mainWindow.on下面ipcMain.handle('aaa',(a,b)=>{})主进程向窗口传值主进程-------数据写在c......
  • c++内存管理(new、delete)
    目录前言c/c++中程序内存区域划分c++函数之new的使用方法第一个场景:对任意类型动态开辟一个类型大小的空间第二个场景:对任意类型动态开辟多个类型大小的空间第三个场景:在第一、二场景下还需要对数据初始化c++函数之delete的使用方法第一个场景:对任意开辟一个类型大小......
  • Wpf BackgroundWorker DoWork RunWorkerCompleted
    //xaml<Windowx:Class="WpfApp37.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic......
  • pandas中var() 函数的应用
    var()函数用于计算DataFrame或Series中数值型数据的方差。方差是衡量数据分散程度的一种统计量,它是各个数据与整个数据集平均值之差的平方的平均值。下面是一个示例,说明如何使用var()函数:importpandasaspd#创建一个DataFramedata={'A':[1,2,3,4,5......
  • 解决ERROR ResizeObserver loop completed with undelivered notifications.
    该报错虽然不影响项目运行,但是影响开发效率,总是弹出报错的黑框很烦人该报错原因:newResizeObserver包裹的方法,在布局发生变化时,不支持每帧都调用解决方法:用window.requestAnimationFrame包裹回调函数在App.vue/main.js中加入以下这段代码即可解决://app.vue写在script......
  • 第05章 Servlet和JSP应用
    Servlet与JSP很相似,但也有一些区别,我们重新说明一下:1.Servlet是一个Java类文件,JSP是一个混编Java的HTML的文件。2.Servlet使用方法来处理请求,JSP则使用内置对象来处理请求。3.Servlet需要编译才能运行,而JSP由JSPContainer管理,不需要编译。4.Servlet通过配置url访问,JSP......
  • 【保姆级讲解下MySQL中的drop、truncate和delete的区别】
    ......
  • 【T5中的激活函数】GLU Variants Improve Transformer
    【mT5中的激活函数】GLUVariantsImproveTransformer论文信息阅读评价AbstractIntroductionGatedLinearUnits(GLU)andVariantsExperimentsonText-to-TextTransferTransformer(T5)Conclusion论文信息名称内容论文标题GLUVariantsImprov......