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

ES6新特性:let关键字详解

文章目录

  • 1 声明提升
  • 2 作用域
  • 3 重复声明

在JavaScript中,letvar 都是声明变量的关键字,但在用法和作用域方面有一些区别。

let 是ES6引入的新的声明变量的关键字,它与 var 相比,更加严格,语法更加规范,并且可以避免一些常见的错误。

1 声明提升

  • let 不存在变量提升

    使用var关键字声明的变量会被提升到当前作用域的顶部,而使用let声明的变量不会。所以,使用var声明的变量可以在声明之前使用,但是使用let声明的变量必须在声明之后使用。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ES6新特性:let关键字</title>
</head><body><script>console.log('myVar:', myVar);    //myVar: undefinedvar myVar = '我是var声明的变量';console.log('myVar:', myVar);    //myVar: 我是var声明的变量console.log('myLet:', myLet);    //报错,Cannot access 'myLet' before initializationlet myLet = '我是let声明的变量';console.log('myLet:', myLet);    //myLet: 我是let声明的变量</script>
</body></html>

2 作用域

  • let声明的变量具有块级作用域

    使用var声明的变量有函数作用域或全局作用域,而使用let声明的变量有块级作用域。

    块级作用域是指变量只在定义它们的块内部可见。这意味着,使用let声明的变量只能在声明它的块级作用域内使用,而不会影响外部作用域。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ES6新特性:let关键字</title>
</head><body><script>{var myVar = '我是var声明的变量';let myLet = '我是let声明的变量';}console.log('myVar:', myVar);    //myVar: 我是var声明的变量console.log('myLet:', myLet);    //报错:myLet is not defined</script>
</body></html>

3 重复声明

  • let 不允许重复声明变量

    使用var声明的变量可以被重复声明,而使用let声明的变量不能被重复声明。

    重复声明是指在同一个作用域内,使用相同的变量名再次声明变量。如果使用var声明同名变量,则会覆盖之前的声明。如果使用let声明同名变量,则会抛出下面的错误。

     Identifier 'myLet' has already been declared
    

在这里插入图片描述
在这里插入图片描述


总之,以后声明变量,用 let 就对了!

http://www.lryc.cn/news/207821.html

相关文章:

  • 鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC]
  • 使用pycharm远程连接到Linux服务器进行开发
  • JavaScript 中 BOM 基础知识有哪些?
  • 【PointNet—论文笔记分享】
  • Mysql8.1.0 windows 绿色版安装
  • 何为自制力?如何提高自制力?
  • 第1篇 目标检测概述 —(3)目标检测评价指标
  • 剑指JUC原理-3.线程常用方法及状态
  • MYSQL8-sql语句使用集合。MYCAT-sql语法使用集合
  • UNIX 域协议(本地通信协议)
  • 分类预测 | MATLAB实现SSA-CNN-BiGRU-Attention数据分类预测(SE注意力机制)
  • 基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
  • 算法进修Day-38
  • 8.MySQL内外连接
  • 使用.NET设计一个Epub电子书生成工具
  • 2023-10-26 用C语言实现一个大整数加法
  • [hive] 窗口函数 ROW_NUMBER()
  • TensorFlow和Pytorch两种机器学习框架的比较及优缺点
  • “Can‘t open workbook - unsupported file type: XML“
  • 达芬奇MacOS最新中文版 DaVinci Resolve Studio 18中文注册秘钥
  • 电脑扬声器未插入?4个方法帮你恢复声音!
  • Python - 通过/SSH 获取远程主机的 env 变量
  • ubuntu 下的 使用anaconda 环境运行python 项目
  • MySQL创建定时任务定时执行sql
  • 如何用MFI确定波浪理论第一浪,anzo capital实操演示
  • vscode推送gitee方法
  • R语言与作物模型(以DSSAT模型为例)融合应用
  • MFC Windows 程序设计[336]之历史记录编辑框(附源码)
  • 基于单片机的IC卡门禁系统设计
  • 大模型 | NEFTune之引入随机噪声对大模型训练的收益