首页 > 其他分享 >JS中的变量声明

JS中的变量声明

时间:2023-12-06 22:32:45浏览次数:25  
标签:console log age JS let 声明 变量

使用关键字 let var const来进行声明

如果不使用关键字来进行声明,也是能声明的,这时这个变量就成了全局变量(非严格模式下),严格模式下会报错ReferenceError;

function example() {
  console.log(a);  // 输出:undefined,变量 a 已被提升,但尚未赋值
  a = 1;           // 赋值,此时 a 变成了全局对象的属性
  console.log(a);  // 输出:1
}

example();
console.log(a);  // 输出:1,因为 a 已成为全局对象的属性

三种方式区别

因为let和const差不多,所以主要说 var 和 let 的区别

变量声明区别

var 声明的变量,是函数作用域的;简单来说就是在函数内声明,函数内可以使用,出了函数就不能使用;如果在全局进行声明,那么被声明的变量就会变成 window 对象的属性;

let 声明的变量,是块级作用域的;同一个块内可以用,出了这个块就不能用;全局声明不会成为window 对象的属性;

   var name = 'Matt';
    console.log(window.name); // 'Matt'
    let age = 26;
    console.log(window.age)

声明提升区别

使用 var 来声明变量时,先使用变量,再声明变量,变量在使用时的值为 undefined ,原理如下:

console.log(age) //undefined
var age = 1;

// 与下面代码等同
var age;
console.log(age)
age = 1;

js 执行代码时,会将所有变量的声明提升到最上边,当执行到原本的声明变量那一行时,再赋值;可以理解为先占位,再设置这个指向的指针;

使用 let 来声明的时候,不会进行变量提升,会进入暂时性死区;

const的特殊性

跟 let 相比,const 只是不能修改的变量;其特殊性在于

  1. 定义一个不能修改的变量
  2. 定义常量,例如 MAX_NUM = 123

此外需要注意的是,如果 const 定义了一个对象,我们仍然可以修改其中的内容,但是我们不能直接让这个对象指向另一个对象;

const student = {
  age : 1 ,
  name : 'test'
}
student.age = 2
console.log(student) //{age: 2, name: 'test'}

student = {} //Uncaught TypeError: Assignment to constant variable.
						//at <anonymous>:1:9

标签:console,log,age,JS,let,声明,变量
From: https://blog.51cto.com/u_16340211/8711440

相关文章

  • fastjson反序列化
    前言fastjson是阿里巴巴旗下的一个Java库,用于Java对象和JSON字符串之间的转换。这个库从2017-2022年,陆陆续续爆出了20多个反序列化RCE。官方采用黑名单的方式修复漏洞,这导致出现一系列的bypass==序列化分析packagePojo;importjava.util.Properties;publicclassUser......
  • 因果推断入门14-16 乘积分解法则、混淆变量、习题
    https://www.bilibili.com/video/BV1Mv411v7zC/?p=14&spm_id_from=pageDriver前面的章节我们学了一些基本个因果图模型,以及一些基本的规则。我们可以根据这些规则,把复杂的问题进行化简;当我们知道图的结构以及随机变量,和随机变量之间的联合分布;联合分布可以用其密度函数来表达,如......
  • 大四jsp实训项目技术总结
    crm项目总结①静态资源疯狂报错?很有可能是后端的问题,后端出了问题,服务器取不出来资源。记住:只要服务器取不到某个资源,很有可能导致所有资源都取不出来。一个经典案例:某个数据库映射文件ICustomerDetail.xml中的mapper地址应该是在cn.edu.zisu.ICustomerDetailDao,但是我盲......
  • PHP+JS实现大文件切片上传功能实现实例源码
    近期公司的项目中,涉及到上传大文件的问题,大文件上传用普通表单上传时出现的问题是,无法断点续存,一但中途中断上传,就要重头开始,这很明显不是我们想要的,所以经过一番查询,学习了一下大文件分割上传的方法。并且使用简单的php做服务端处理程序实现一个功能demo,供以后回顾使用。本人也是......
  • 「GIS数据」下载全国的GeoJSON、shp格式数据(精确到乡镇街道级)-2023年12月更新
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......
  • Nodejs APM监控实战分享
    如何对线上的nodejs做监控,了解相关的GC、内存使用情况、性能,如何更好的了解相关的指标,我们需要做一个采集线上数据的方案,但是又不希望侵入性太强,首先收集的指标。内存相关指标说明堆内存rss:常驻内存,node进程分配的总内存大小external:v8管理的C++所占用的内存大小arra......
  • three.js 汽车行驶效果
    实现原理是使用TWEEN.Tween实现动画效果实现汽车模型加载使用Promise编写模型的异步加载方法Car.prototype.loadCar=function(position,rotation){letonProgress=function(xhr){};returnnewPromise((resolve,reject)=>{if(!this.mo......
  • Go--gjson
    GJSON是一个用于处理JSON数据的Go语言库。它提供了一些方便的功能,例如解析JSON字符串、查询JSON对象、生成JSON对象等下载gjson: go get -ugithub.com/tidwall/gjson 1、使用传入JSON串和要读取的键路径,路径使用点号语法,如"name.last"或"age"。一旦找到值,......
  • php:对象运行时新增成员变量
    简单到无以复加...1classA_test{23}45$obj=newA_test();6$objSupplyProp="abc";7$obj->$objSupplyProp=123;89var_dump($obj->$abc); 但是动态声明添加成员变量带来一个问题,ide无法有效识别。那么需要通过注释来解决这个问题:1/**2*@prop......
  • appsettings.json和appsettings.Development.json
    在ASP.NETCore中,当应用程序处于开发环境时,默认情况下会加载appsettings.json和appsettings.Development.json文件中的配置,并且appsettings.Development.json中的配置会覆盖appsettings.json中的相同配置。这是ASP.NETCore提供的一种便捷的配置管理机制。如果你希......