因为工作的原因登上过讲台。虽然时间不长,但是就是这些零散的“讲台时间”,让以前原本比较模糊的概念清晰了起来,一些知识点也形成了网络,整个知识体系中一些“基础角落”也更加的夯实牢靠。最直接的好处就是知识调用迅捷度的提升,间接的好处就是自信心的提升。感觉整个人都变的萌萌哒……
感觉自己萌萌哒
讲课就是知识的复述,但是这种机会比较少。如何才能有一套稳定的机制保证自己学习的知识能够有效的“复述”出来?答案就是建立自己的博客,并且能做到及时更新,这样能做到随时查询和梳理。以上就是我建立博客的最初想法。
不过作为一名专业的“半吊子”程序员,无时不刻都在鄙视自己,尤其是基础方面,原因是我半路出家改行当了程序员。“学习焦虑”的压力让我觉得梳理下JavaScript
的基础知识顺便查漏补缺是一件非做不可的事情,于是有了这个想法,那么就从今天开始吧。
很多语言中声明变量必须要声明变量的类型。JS这一点让人感到十分惬意,因为它的变量是“松散类型”。所谓的松散类型就是可以保存任何类型的数据。也就是说在JS中变量仅仅是一个用于保存值的“占位符”。声明使用var
操作符,也可以说使用关键字var
,在后面跟上变量名我们就完成一个变量的声明,并且我们不用考虑变量的类型。
/*声明变量name*/
var name;
JS变量能够保存任何值,而且可以直接初始化变量,在定义变量的同时就可以直接给变量赋值,并根据赋值类型来决定变量的类型。如果不给变量设置初始值,例如var name;
那么它就会保存一个特殊的值–“undefined
”。
var name = "Tom"; /*String类型*/
var age = 12;/*Number类型*/
var house = true; /*Boolean类型*/
var work = new Object(); /*Object类型*/
var money; /*undefined*/
还有这种操作?
另外需要着重提一点的是,在var name="Tom";
中变量name
保存了一个字符串“Tom”。像这样的初始化变量并不会把它标记为字符类型;初始化的过程就是给变量赋值一样简单。所以JS允许修改变量的值的时候同时修改值的类型。
var name = "Tom";
name = 25; /*允许且有效但不推荐改变变量的类型*/
上述代码先给变量name
赋值“Tom”,之后的操作又将数字25赋值给变量name
。那么在最后变量name
的输出值就是数字25。这种操作在JS是被允许的,但是不推荐这么做。
为提高效率或是照顾懒人,我们可以使用一条语句定义多个变量;而且“松散类型”的特点决定了在这条语句中可以有多个类型的初始化变量操作。
var name = "Tom",age = 22,work = new Object();
/*如果你有强迫症或是为了提高代码可读性也可以写做以下的方式*/
var name = "Tom",
age = 22,
work = new Object();
那画面太美我不敢看
需要注意的地方要来了,在声明变量的时候关键词var
并不是必须。如果省略var
所定义的变量就是全局变量,用关键字var
定义的变量就是局部变量。如果在函数内部使用关键字var
定义变量,函数退出后变量会被销毁。这里面牵扯到变量作用域的知识,那是另外一篇文章的内容。这里只是简要的说明下关键字var
的作用。
function test(){
var msg = "hello,world!"; /*msg是局部变量*/
}
test();
console.log(msg); /*错误!!!*/
/*----华丽的分割线-----*/
function test(){
msg = "hello,world!";/*msg是全局变量*/
}
test();
console.log(msg); /*结果是“hello,world!”*/
JS中让人抓狂的特性之一,就是它对全局变量的依赖。由于它没链接器(linker),所有的编译单元都会载入一个公共全局变量中,这点会造成一些违反直觉的结果。局部作用域中定义的全局变量很难维护,刻意忽略了var
关键字也会由于相应变量不会马上就有定义而导致混乱,所以对待全局变量一定要慎重又慎重。在”use strict”(严格模式)下给未经声明的变量赋值会抛出ReferenceError
错误。
另外变量的命名不能是关键字和保留字。所谓关键字和保留字的意思如果不懂,由于和本文内容契合度不高,这里不再详细说明请自行百度解决。//ps:主要是懒的打字了。
如果你想定义全局变量,最好的方法就是在任何(所有)函数之外放置var
定义变量。还有一种方法就是直接给全局对象添加一个属性,因为JS中全局对象是所有全局变量的容器。在web浏览器中全局对象名为window
。
window.fullName = "Tom";
/*web浏览器环境中定义全局变量方法*/
关于JS中变量的知识大概也就是这么多……沉迷于学习不能自拔,请把下图中显示器中的内容自行脑补成程序代码,这就是我的苦逼状态……
(报告完毕!)
网友评论