李东的技术博客

文章内容Content

“JavaScript基础日拱一卒”之变量

2016/09/22 255 ℃ 抢个沙发

by LiDong from https://www.lidongtech.com/javascript-basic-variables.html
本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处。如果只是引流,请随意~

因为工作的原因登上过讲台。虽然时间不长,但是就是这些零散的“讲台时间”,让以前原本比较模糊的概念清晰了起来,一些知识点也形成了网络,整个知识体系中一些“基础角落”也更加的夯实牢靠。最直接的好处就是知识调用迅捷度的提升,间接的好处就是自信心的提升。感觉整个人都变的萌萌哒……

讲课就是知识的复述,但是这种机会比较少。如何才能有一套稳定的机制保证自己学习的知识能够有效的“复述”出来?答案就是建立自己的博客,并且能做到及时更新,这样能做到随时查询和梳理。以上就是我建立博客的最初想法。

不过作为一名专业的“半吊子”程序员,无时不刻都在鄙视自己,尤其是基础方面,原因是我半路出家改行当了程序员。“学习焦虑”的压力让我觉得梳理下JavaScript的基础知识顺便查漏补缺是一件非做不可的事情,于是有了这个想法,那么就从今天开始吧。

很多语言中声明变量必须要声明变量的类型。JS这一点让人感到十分惬意,因为它的变量是“松散类型”。所谓的松散类型就是可以保存任何类型的数据。也就是说在JS中变量仅仅是一个用于保存值的“占位符”。声明使用var操作符,也可以说使用关键字var,在后面跟上变量名我们就完成一个变量的声明,并且我们不用考虑变量的类型。

JS变量能够保存任何值,而且可以直接初始化变量,在定义变量的同时就可以直接给变量赋值,并根据赋值类型来决定变量的类型。如果不给变量设置初始值,例如var name;那么它就会保存一个特殊的值–“undefined”。

另外需要着重提一点的是,在var name="Tom";中变量name保存了一个字符串“Tom”。像这样的初始化变量并不会把它标记为字符类型;初始化的过程就是给变量赋值一样简单。所以JS允许修改变量的值的时候同时修改值的类型。

上述代码先给变量name赋值“Tom”,之后的操作又将数字25赋值给变量name。那么在最后变量name的输出值就是数字25。这种操作在JS是被允许的,但是不推荐这么做。

为提高效率或是照顾懒人,我们可以使用一条语句定义多个变量;而且“松散类型”的特点决定了在这条语句中可以有多个类型的初始化变量操作。

需要注意的地方要来了,在声明变量的时候关键词var并不是必须。如果省略var所定义的变量就是全局变量,用关键字var定义的变量就是局部变量。如果在函数内部使用关键字var定义变量,函数退出后变量会被销毁。这里面牵扯到变量作用域的知识,那是另外一篇文章的内容。这里只是简要的说明下关键字var的作用。

JS中让人抓狂的特性之一,就是它对全局变量的依赖。由于它没链接器(linker),所有的编译单元都会载入一个公共全局变量中,这点会造成一些违反直觉的结果。局部作用域中定义的全局变量很难维护,刻意忽略了var关键字也会由于相应变量不会马上就有定义而导致混乱,所以对待全局变量一定要慎重又慎重。在”use strict”(严格模式)下给未经声明的变量赋值会抛出ReferenceError错误。

另外变量的命名能是关键字保留字。所谓关键字和保留字的意思如果不懂,由于和本文内容契合度不高,这里不再详细说明请自行百度解决。//ps:主要是懒的打字了。

如果你想定义全局变量,最好的方法就是在任何(所有)函数之外放置var定义变量。还有一种方法就是直接给全局对象添加一个属性,因为JS中全局对象是所有全局变量的容器。在web浏览器中全局对象名为window

关于JS中变量的知识大概也就是这么多……沉迷于学习不能自拔,请把下图中显示器中的内容自行脑补成程序代码,这就是我的苦逼状态……

(报告完毕!)
本文标签:标签:, ,