JavaScript中的变量定义与储存介绍
与C、Java等编程语言不同,JavaScript中的变量是无类型的,所有的变量定义使用的关键词均为var
var a;
var m, n;
var x=42, y="test";
如果定义变量后未对该变量进行赋值,那么该变量的值为undefined。如上面代码中的a、m、n三个变量的值均为undefined。
由于JS中变量是无类型的,完全可以对同一个变量进行不同类型的赋值,如
var b = "temp";
console.log(typeof b);//string
b = 108;
console.log(typeof b);//number
除了可以对同一变量进行不同类型的赋值,JavaScript中还可以对变量进行重复定义;如果这么做,则第一次之后的变量定义语句等价于赋值语句
var c = "hello";
console.log(c);//hello
var c = true;
console.log(c);//true
在ECMAScript标准的严格模式(strict mode)下,所有的变量定义均需使用var关键词。如果不使用严格模式,那么当JS程序对某个未被定义过的变量进行赋值时,程序将在JS全局对象中创建一个名称与该变量相同的属性,也即创建一个新的全局变量。这种做法会带来很多问题(比如,多个JS程序间产生全局变量污染等),给后期维护带来不小的麻烦;在实际开发过程中,应当尽量避免使用这种做法。
变量的储存
如果定义的变量为全局变量,在变量定义过程中没有使用var关键词,那么该变量会作为全局对象的属性而存在,可以通过访问this(全局对象)的相应属性而获得,也可以通过使用delete关键词将其从全局对象中删除掉
var e = "globalVariableValue";//defined outside of any function, it is a global variable, but does not store in "this"
f = "globalVariableValue2";
this.g = "globalVariableValue3";
console.log(this.e);//undefined
console.log(this.f);//globalVariableValue2
console.log(this.g);//globalVariableValue3
delete f;
delete g;
console.log(this.f);//undefined
console.log(this.g);//undefined
对于JavaScript中的每一次函数调用,JavaScript都会创建一个局部对象以储存在该函数中定义的局部变量;如果在该函数内部还有一个嵌套定义的函数(nested function),那么JavaScript会在已经定义的局部对象内部再定义一个嵌套局部对象。对于一个函数,其内部有多少层的嵌套函数定义,也就有多少层的嵌套局部对象。该局部对象称为“函数调用对象”(ECMAScript 3中的“call object”,ECMAScript 5中改名为“declarative environment record”,但个人认为还是ECMAScript 3中的名称更容易理解一些)。
与全局对象this相反,JavaScript中不提供任何方式来访问这些局部对象(函数调用对象)。,开发人员无法对这些局部对象进行操作。不过,理解这些函数调用对象对于理解JavaScript中的一些概念会有很大的帮助,比如说变量的作用域和闭包。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程