js【详解】声明常量和变量 const let var

声明常量 const

  • 声明常量时,必须赋值!
  • 声明的常量赋值后,不能修改(运行时会报错)
  • ES6 新增语法
  • 有块级作用域
const webName = 'EC编程俱乐部'

常量不可变的本质

常量赋值值类型数据后,不能再赋其他值,但若其初始值是一个对象,可以修改对象的属性,但不能赋值为其他对象;若其初始值是一个数组,可以添加和修改数组中的元素,但不能赋值为其他数组,所以真正不可变的是常量中存储的地址!

声明变量 let var

let a = 1; 
var b = 2;
  • let 为 ES6 新增语法,有块级作用域
  • var 为 ES5 的语法,会导致变量提升,已不推荐使用
  • 声明变量时,可以只声明,不赋值,此时变量的值为 undefined (未定义)
  • 变量必须先声明,后使用,否则会报错——变量未定义。
  • 同一作用域中,变量名称不能相同。

全局变量

在全局作用域({} 和函数外)中声明的变量即全局变量,尽量减少全局变量的数量,以避免命名冲突。

在浏览器中

  • var 声明的全局变量都是 window 的属性
  • var 声明的全局变量还能用 this 访问,如 this.a

变量的命名规则

  • 字母、下划线或$开头
  • 不能是关键字
  • 区分大小写,
  • 长度不能超过255个字符
  • 汉语可以作为变量名。但是不建议使用,因为 low。

JavaScript 中的关键字(不用记)

abstract else instanceof switch boolean enum int synchronized break export interface this byte extends long throw case FALSE native throws catch final new transient char finally null TRUE class float package try const for private typeof continue function protected var debugger goto public void default if return volatile delete implements short while do import static with double in super

判断变量是否存在

实际上是在用 typeof 测试一个变量是否已经被初始化(或者说测试变量值是否为 undefined )。

if (typeof somevar === "undefined") {console.log("不存在变量somevar");
}else{console.log("存在变量somevar");
}

【面试题】什么是变量提升?

在执行 js 代码时,会先将所有 var 定义的变量赋值为 undefined(相当于提升到代码最前面执行) ,即便在使用 var 定义的变量之前并未定义变量,也不会报错

console.log(a); // 打印 undefined
var a = 1;

自测题 – 变量提升

// 声明全局变量 a,并赋值 123
var a = 123;function f() {// 因 var 变量提升的特性,此时打印的 a 是函数作用域内的局部变量 a console.log(a); //打印结果:undefined// 函数作用域内声明局部变量 a (虽和全局变量 a 的名称相同,但却是不同的变量!),并赋值 1var a = 1;// 打印函数作用域内的局部变量 aconsole.log(a); //打印结果:1
}f();// 打印全局变量 a
console.log(a); //打印结果:123

【面试题】var 和 let const 的区别

  • var 是 ES5 语法,会导致变量提升,let 和 const 是 ES6 语法
  • var 和 let 用于声明变量,可修改; const 用于声明常量,不可修改;
  • let 和 const 有块级作用域,var 没有

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

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

相关文章

【数智化案例展】吉林省消防救援总队——基于大语言模型的119智慧助手

‍ 嘉诚信息案例 本项目案例由嘉诚信息投递并参与数据猿与上海大数据联盟联合推出的《2024中国数智化转型升级创新服务企业》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着信息时代的迅猛发展,消防人员正面临前所未有的知识爆炸挑战。为了高…

功能丰富的开源协作式知识库系统outline

语雀飞书平替快速协作式的团队知识库提供一个美观、易于使用的界面允许团队成员以实时方式协作编辑文档支持Markdown-i68爱六八,链接你我他:https://i68.ltd项目仓库:GitHub - outline/outline: The fastest knowledge base for growing teams. Beautifu…

day30--56. 合并区间+ 738.单调递增的数字

一、56. 合并区间 题目链接:https://leetcode.cn/problems/merge-intervals/ 文章讲解:https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html 视频讲解:https://www.bilibili.com/video/BV1wx4y157nD 1.1 初见思路 …

数据库第四次练习

数据准备 创建两张表:部门(dept)和员工(emp),并插入数据,代码如下 create table dept( dept_id int primary key auto_increment comment 部门编号, dept_name char(20) comment 部门名称 ); in…

SAP PS学习笔记02 - 网络,活动,PS文本,PS文书(凭证),里程碑

上一章讲了PS 的概要,以及创建Project,创建WBS。 SAP PS学习笔记01 - PS概述,创建Project和WBS-CSDN博客 本章继续讲PS的后续内容。包括下面的概念和基本操作,以及一些Customize: - 网络(Network&#xf…

力扣-回溯法

何为回溯法? 在搜索到某一节点的时候,如果我们发现目前的节点(及其子节点)并不是需求目标时,我们回退到原来的节点继续搜索,并且把在目前节点修改的状态还原。 记住两个小诀窍,一是按引用传状态…

copy 和 mutableCopy 有点乱

对 string literal (字符串字面量) 执行 copy 要打印指针指向对象的地址和指针本身的地址,可以使用 %p 格式符来输出指针地址。以下代码,展示了 originalString 和 copiedString 的指针地址和指向对象的地址: NSString *originalString &q…

使用 FFmpeg 处理视频:简介、常用命令及在 C++ 中调用 FFmpeg

文章目录 使用 FFmpeg 处理视频:简介、常用命令及在 C 中调用 FFmpeg一、FFmpeg 简介1. 什么是 FFmpeg?2. 主要特性3. 官方网站和文档 二、FFmpeg 常用命令1. 视频转码2. 提取音频3. 剪切视频4. 合并视频5. 调整分辨率6. 视频截图7. 推流8. 拉流 三、在 …

【Go系列】 array、slice 和 map

承上启下 我们上一篇文章中介绍了if和for,这不得练习下,让我们一起来实践一下如何使用 continue 语句来计算100以内的偶数之和。在我们编写代码的过程中,continue 语句将会帮助我们跳过某些不需要的迭代,比如在这个例子中&#xf…

欣奇随机美图源码

欣赏养眼美图让人心情愉悦 新增正能量进站引导首页 上传文件解压即可用有手就行 美图输出接口自判断版 http://mt.xqia.net/api.php http://mt.xqia.net/api.php?typejson 源码下载:https://download.csdn.net/download/m0_66047725/89520368 更多资源下载&…

20240711每日消息队列-------------MQ消息的积压的折磨

目标 解决MQ消息的积压 背景 菜馆系统----------- 系统读取消息,处理业务逻辑,持久化订单和菜品数据,然后将其显示在菜品管理客户端上。 最初我们的用户基数很小,上线后的一段时间内,MQ消息通信还算顺利。 随着用户…

基于深度学习的视频内容分析

基于深度学习的视频内容分析是一种利用深度学习技术对视频数据进行处理和理解,以提取有用信息、识别对象和行为、检测事件和生成描述等的方法。这种技术在监控安全、视频搜索、自动驾驶、智能家居和娱乐等多个领域具有广泛应用。以下是关于这一领域的系统介绍&#…

java实现对多层json排序

1、概述 目的:对多层json排序,按字母的升序排序。实现方案:利用java中的TreeMap排序特性进行排序。 2、工具类 package com.ybw.util;import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject;import java.util.Map;…

(三)大模型/人工智能/机器学习/深度学习/NLP

一.模型 模型,简单来说,就是用来表示或解释某个事物、现象或系统的一种工具或框架。它可以是实体的,也可以是虚拟的,目的是为了帮助我们更好地理解和预测所描述的对象。在生活中,模型无处不在,它们以各种形…

R包:‘ggcharts好看线图包‘

介绍 ggcharts提供了一个高级{ggplot2}接口,用于创建通用图表。它的目标既简单又雄心勃勃:让您更快地从数据可视化的想法到实际的绘图。所以如何?通过处理大量的数据预处理,为您模糊{ggplot2}细节和绘图样式。生成的图是ggplot对象,可以使用…

蓝桥 7.11 dp

2.砝码称重 - 蓝桥云课 (lanqiao.cn) 思路 动态规划的核心思想是将问题分解成更小的子问题,并存储子问题的解,以避免重复计算 数组 dp[i][j] 表示使用前 i 个砝码可以称出的重量为 j 的数量 更新过程如下: 1.初始化:dp[0][0] …

java中关于反射与动态代理

java中关于反射与动态代理 java反射技术 1、什么是反射? Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信…

python:sympy 求解一元五次方程式

pip install sympy 或者 本人用的 anaconda 3 自带 sympy 在北大数学训练营,韦东奕 用卡丹公式 巧妙 求解一元五次方程式: \latex $x^510*x^320*x-4 0$ from sympy import *x symbols(x) expr x**5 10*x**3 20*x -4# 用卡丹公式 尝试化简 a sym…

鸿蒙开发工程师面试题-架构篇

1. 假如让你负责鸿蒙App架构设计,你会关注哪些方面? 分层架构设计: 将应用划分为产品定制层、基础特性层和公共能力层,以降低层间依赖性,提升代码可维护性。通过分层架构设计,进一步明确每层的职责和层间交…

【IOS】React Native之HelloWorld

RN搭建开发环境 rvm 安装3.2.2 brew install node18 brew install watchman# 使用nrm工具切换淘宝源 npx nrm use taobao# 如果之后需要切换回官方源可使用 npx nrm use npmnpm install -g yarnbrew install cocoapodsnpm uninstall -g react-native-cli react-native-communi…