【微信小程序】let和const-综合实训

letconst 都是用于声明变量的关键字,它们与传统的 var 关键字相比,有很多不同之处。

let 声明块级作用域变量,可再赋值;const 声明块级作用域常量,不可再赋值。

以下是它们的详细介绍:

一、基本概念

  • let

    • let 声明的变量只在块级作用域(用 {} 包裹的区域)内有效。它解决了 var 声明的变量存在变量提升和作用域链问题。例如:

    {let a = 10;
    }
    console.log(a); // ReferenceError: a is not defined

    在这个例子中,a 只在 {} 这个块级作用域内有效,外部无法访问。

    • let 声明的变量在声明之前是不可用的,这被称为“暂时性死区”。比如:

    console.log(b); // ReferenceError: b is not defined
    let b = 20;

    let b = 20; 这行代码之前,b 是不可用的,这避免了像 var 那样变量提升导致的错误使用未初始化的变量的情况。

  • const

    • const 用于声明常量,它声明的变量必须立即初始化,且一旦赋值后就不能再被重新赋值。例如:

    const PI = 3.14;
    // PI = 3.15; // TypeError: Assignment to constant variable.

    在这个例子中,PI 被声明为常量,赋值为 3.14 后,再尝试修改它的值会报错。

    • const 声明的常量也具有块级作用域的特性,和 let 一样,只在声明它的块级作用域内有效。例如:

    {const MAX = 100;
    }
    console.log(MAX); // ReferenceError: MAX is not defined

    MAX 只在 {} 内部有效,外部无法访问。

二、使用场景

  • let

    • 当需要在某个特定的代码块内(如循环体、条件语句块等)使用一个变量,并且这个变量的值可能会在代码块内发生变化时,使用 let 是合适的。例如在循环中:

    for (let i = 0; i < 10; i++) {console.log(i);
    }
    // i 在循环外部不可用

    这里使用 let 声明循环变量 ii 只在循环体内有效,避免了 var 声明循环变量可能导致的在循环外部意外访问到循环变量的情况。

  • const

    • 当需要定义一个值在程序运行过程中不会改变的常量时,应该使用 const。比如定义一些配置常量、数学常量等。例如在微信小程序中定义 API 请求的基础 URL:

    const BASE_URL = 'https://api.example.com';

    使用 const 可以清楚地表明这个值是不应该被修改的,有助于代码的可读性和维护性。同时,对于对象或数组类型的常量,虽然不能重新赋值给另一个对象或数组,但可以修改其内部的属性或元素。例如:

    const user = {name: '张三',age: 20
    };
    user.name = '李四'; // 合法,修改对象内部属性
    // user = {}; // TypeError: Assignment to constant variable. 不能重新赋值为一个新的对象

在微信小程序开发中,合理使用 letconst 可以使代码更加清晰、规范,减少一些常见的变量作用域和变量提升相关的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/1351.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从CentOS到龙蜥:企业级Linux迁移实践记录(龙蜥开局)

引言&#xff1a; 在我们之前的文章中&#xff0c;我们详细探讨了从CentOS迁移到龙蜥操作系统的基本过程和考虑因素。今天&#xff0c;我们将继续这个系列&#xff0c;重点关注龙蜥系统的实际应用——特别是常用软件的安装和配置。 龙蜥操作系统&#xff08;OpenAnolis&#…

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…

MySQL的安装

MySQL典型的关系型数据库&#xff08;RDBMS&#xff09;&#xff1a;oracle、MySQL、SqlServer MySQL的版本 5.5~5.7、8.0 MySQL的安装和配置 下载地址&#xff1a; https://downloads.mysql.com/archives/community/ 安装包 (x86, 64-bit), MSI Installer 执行下一步即…

跨境电商领域云手机之选:亚矩阵云手机的卓越优势

在跨境电商蓬勃发展的当下&#xff0c;云手机已成为众多企业拓展海外市场的得力助手。亚矩阵云手机凭借其独特优势&#xff0c;在竞争激烈的云手机市场中崭露头角。不过&#xff0c;鉴于市场上云手机服务供应商繁多&#xff0c;企业在抉择时需对诸多要素予以审慎考量。 跨境电商…

【论文阅读】MAMBA系列学习

Mamba code&#xff1a;state-spaces/mamba: Mamba SSM architecture paper&#xff1a;https://arxiv.org/abs/2312.00752 背景 研究问题&#xff1a;如何在保持线性时间复杂度的同时&#xff0c;提升序列建模的性能&#xff0c;特别是在处理长序列和密集数据&#xff08;如…

Java100道面试题

1.JVM内存结构 1. 方法区&#xff08;Method Area&#xff09; 方法区是JVM内存结构的一部分&#xff0c;用于存放类的相关信息&#xff0c;包括&#xff1a; 类的结构&#xff08;字段、方法、常量池等&#xff09;。字段和方法的描述&#xff0c;如名称、类型、访问修饰符…

【华为云开发者学堂】基于华为云 CodeArts CCE 开发微服务电商平台

实验目的 通过完成本实验&#xff0c;在 CodeArts 平台完成基于微服务的应用开发&#xff0c;构建和部署。 ● 理解微服务应用架构和微服务模块组件 ● 掌握 CCE 平台创建基于公共镜像的应用的操作 ● 掌握 CodeArts 平台编译构建微服务应用的操作 ● 掌握 CodeArts 平台部署微…

C#学习笔记 --- 简单应用

1.operator 运算符重载&#xff1a;使自定义类可以当做操作数一样进行使用。规则自己定。 2.partial 分部类&#xff1a; 同名方法写在不同位置&#xff0c;可以当成一个类使用。 3.索引器&#xff1a;使自定义类可以像数组一样通过索引值 访问到对应的数据。 4.params 数…

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…

栈 (算法十二)

1.删除字符串中的所有相邻项 link:1047. 删除字符串中的所有相邻重复项 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 栈&#xff0b;模拟 code class Solution { public:string removeDuplicates(string s) {// 栈来模拟即可// string代替栈string ans;for(…

特制一个自己的UI库,只用CSS、图标、emoji图 第二版

图&#xff1a; 代码&#xff1a; index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…

Linux第二课:LinuxC高级 学习记录day01

0、大纲 0.1、Linux 软件安装&#xff0c;用户管理&#xff0c;进程管理&#xff0c;shell 命令&#xff0c;硬链接和软连接&#xff0c;解压和压缩&#xff0c;功能性语句&#xff0c;结构性语句&#xff0c;分文件&#xff0c;make工具&#xff0c;shell脚本 0.2、C高级 …

数据结构(Java版)第八期:LinkedList与链表(三)

专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 目录 一、链表中的经典面试题 1.1. 链表分割 1.2. 链表的回文结构 1.3. 相交链表 1.4. 环形链表 一、链表中的经典面试题 1.1. 链表分割 题目中要求不能改变原来的数据顺序&#xff0c;也就是如上图所示。…

自动连接校园网wifi脚本实践(自动网页认证)

目录 起因执行步骤分析校园网登录逻辑如何判断当前是否处于未登录状态&#xff1f; 书写代码打包设置开机自动启动 起因 我们一般通过远程控制的方式访问实验室电脑&#xff0c;但是最近实验室老是断电&#xff0c;但重启后也不会自动连接校园网账户认证&#xff0c;远程工具&…

【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法,以及自动化实时数据采集

【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法&#xff0c;以及自动化实时数据采集 mmWave Studio提供的功能完全够用了 不用去纠结用DCA1000低延迟、无GUI传数据 速度最快又保证算力无非就是就是Linux板自己写驱动做串口和UDP 做雷达产品应用也不会采用DCA1000的…

目标检测中的Bounding Box(边界框)介绍:定义以及不同表示方式

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

【C语言】获取文件属性

目录 1. stat函数 2. 获取文件属性 3. 获取文件权限 1. stat函数 int stat(const char *path, struct stat *buf); 功能&#xff1a;获取文件属性 参数&#xff1a; path&#xff1a;文件路径名buf&#xff1a;保存文件属性信息的结构体 返回值&#xff1a;成功&#xff1…

springboot

springboot排出tomcat服务器&#xff0c;当成spring容器使用 springboot-mybatis springboot-mybatisplus 整合druid

【算法】将单链表按值划分

问&#xff1a; 将单链表按某值划分成左边小、中间相等、右边大的形式 答&#xff1a; 笔试&#xff1a;初始化一个Node类型的数组&#xff0c;对数组进行partition&#xff0c;然后把数组中的节点元素串成链表 public static Node listPartition1(Node head, int pivot) {…

图解Git——分支的新建与合并《Pro Git》

⭐分支的新建与合并 先引入一个实际开发的工作流&#xff1a; 开发某个网站。为实现某个新的需求&#xff0c;创建一个分支。在这个分支上开展工作。 正在此时&#xff0c;你突然接到一个电话说有个很严重的问题需要紧急修补。你将按照如下方式来处理&#xff1a; 切换到你…