不管哪一门编程语言,弄清楚该怎么声明变量都是很重要的,js中怎么声明不是很清楚,在网上看别人写的东西,有时候看到有用var关键字去声明的,有时候又看到有人用let关键字去声明,问题是好像这两个不管哪个也说不上谁对谁错,但let用的比较多。
一个变量,就是一个用来存放数值的容器。
①一个变量只是一个容器,等于一个放东西的盒子,不是这个东西本身。②变量的特点:一是它存放的数值是可变的。二是它可以存放任何你想存的东西(数字、字符串、数组、函数…)。01声明变量
如果你需要一个变量来存数值,那首先得有一个变量,就是创建一个变量,也就是说需要声明一个变量。声明变量的语法是用关键字var 或者 let关键字后面加上变量的名字。letmyName;用上面这样的语句就可以声明一个变量,因为我想用它来存储人名,所以给这个变量起一个名字叫做myName,也就是“我的名字”的意思。要注意的是,上面这个变量还没有数值被存进去,这个语句只是在说:我给了你一个叫做myName的容器,它现在是空的,你接下来可以用它来存你想存的东西。像这样只是声明了还没存储数值的一个变量,当执行代码的时候,会返回一个undefined的返回值。02初始化变量
给上面定义的变量赋值,就是初始化它,方法就是,变量名=要赋的值:myName=’Calvados’;这样初始化了一个变量,在控制台打印时,就会输出所赋给它的值,而不再是undefined。上面完成对一个变量声明和初始化变量的工作用了两行语句:let myName; myName = ‘Calvados’;实际上可以不用这么麻烦,大多数时候合并在一起写就行了,也就是在声明变量的同时给它赋值:letmyName =’Calvados’;03var与let的关系
声明变量的关键字为什么会有var和let两个?要回答这个问题,需要知道JS语言的历史。最初创建JS的时候,只有一个声明变量的关键字var,这个关键字大多数情况下使用没问题,但有时在工作方式上会有点问题,为了解决问题,才有了let的出现。这两个关键字现在也还都能用,但最好选择let来声明。下面写var与let的两个区别,还有其他的区别之后再写。04var和let区别1-关于是否可重复声明
1、var 是可以重复声明的。
比如,你用var先声明了一个变量a同时赋值等于1,下一句又重复声明这个a让它等于2了,那么最终就等于你声明了这个变量a它的值为2,反正后面赋的值会覆盖掉前面的值。
但这样是不合理的,所以let就不允许这样做了。
2、let 不可重复声明变量
比如下面这样用let声明的话,会报错。
PS:let不可重复声明这个规则,只在同一作用域下,不同作用域下还是可以重复声明的。
05区别2 关于是否可在声明语句前调用
首先需要了解变量的声明提升是什么。
当你写了一段js代码,它需要通过js解释器进行编译,然后转换成二进制的0和1,这样才能让计算机认识,它才会执行。
在js解释器编译的过程中,会先存在一个预编译,在预编译阶段,解释器会整体扫描整个代码文件,然后把所有变量的声明语句都提取到所有代码执行之前,而赋值语句保持原来的位置不变。
例子:如果你先写了一个打印a变量的值的语句,然后才写了一个声明a变量并同时赋值为1的语句。
当你运行的时候,你得到的打印结果会是undefined。这个打印结果就能看出来,使用var关键字声明变量的时候,可以先使用变量,再声明。
这个就是因为预编译,让a变量的声明提升到了打印语句前面,大概就可以隐式的看成下面这样:
这样,当这段代码逐行执行的时候,先执行声明变量语句,下一句访问已声明的变量a,打印它,但因为打印语句的下一句才是给这个变量赋值的语句,执行不到,也就获取不到所赋的值。
但这样也是不合理,一个变量还没有声明,怎么就能去使用呢?所以let也做出了改变。
用let声明的变量不可以在声明语句前调用,
还是上面的例子,如果是用let声明变量,就会报错:不能访问没有初始化的变量。
??很多语句后面忘了加分号,应该要加上的,为什么有的地方不加,我讨厌分号吗????
-·END·-
JS目录
· JS参考资料整理
·1.1 【网站】JS的官方文档网站【☆☆☆☆☆】
https://developer.mozilla.org/
特点:最基础的内容里面都有,基本上看它就够了
·1.2 【网页】w3school js教程(基础、高级)
https://www.w3school.com.cn/js/index.asp
特点:
①能当一个字典用,目录一眼看过去大概可以知道JS都有些什么,内容上比较简洁。
②对JS版本的介绍比较全,可以了解这门语言的版本还有历史。
·1.3 【视频】var和let的区别是什么?
https://b23.tv/PTg3RXf
·1.4 【博客】在js中何时使用var、let及const
https://blog.csdn.net/weixin_33701294/article/details/91464527
· 1 变量
·1.1什么是变量?
·2.1怎么声明一个变量?
·2.2 初始化变量
·3.1声明变量关键字var与let的关系
·3.2 var与let的区别1-变量是否可重复声明
·3.3 var与let的区别2-变量是否可在声明语句前调用