JavaScript 变量
2007-03-28 20:33
204 查看
JavaScript的变量是无类型(untype)的,这意味着JavaScript的变量可以存放任何类型的值。如:在JavaScript中可以先把一个数值赋给一个变量,然后再把一个字符串赋给这个变量。而且JavaScript可以在必要的时候自动将一种类型的值转换成另外一种类型。
在JavaScript中声明一个变量的方法有:
var i;
var sum;
var i,sum;
var i =0;
var sum = 20;
var str = "hello";
如果一个变量被声明了,但是没有赋值,它的初始值就是undefined。
由var声明的变量是永久性的,用delete运算符来删除这些变量会引发错误。
在JavaScript中可以使用var语句多次声明同一个变量,而不造成错误。如果尝试给一个未用var声明的变量赋值,JavaScript会隐式地声明这个变量,不过这个变量将被创建为全局变量,即使是在一个函数体内。如果尝试读一个未声明的变量的值,JavaScript会生成一个错误。如果读一个声明后,未赋值的变量的值,将返回undefined。
在JavaScript中也类似于Java等其它语言,包括全局变量和局部变量,但是与Java等其它语言不同的是,它没有块级作用域,即在函数内,不论是什么位置声明的变量,在整个函数体内都有效。如下例:
var scope = "global";
function f(){
alert(scope); //显示"undefined",不是"global"
var scope = "local"; //变量在此处被初始化,在函数体内到处定义
alert(scope); //显示"local"
}
在JavaScript中,由于其变量内容的不同,变量被分为基本类型变量和引用类型变量。基本类型变量用八字节内存,存储基本数据类型(数值、布尔值、null和未定义)的值,引用类型变量则只保存对对象、数组和函数等引用类型的值得引用(即内存地址)。
不管是全局变量还是局部变量,JavaScrit都提供了一个独立的对象来存储它们。
全局变量被存储在全局对象中。JavaScript解释器开始运行时,首先要做的事情之一就是创建一个全局对象,而所有的全局变量都是作为属性被存储在这个全局对象之中。此外JavaScript解释器还会用预定义的值和函数来初始化全局对象的许多属性,如Infinity、parseInt和Math等。在程序的顶层代码中,可以使用关键字this来引用这个全局变量。而在客户端JavaScript中,Window对象代表浏览窗口,它是包含在该窗口中的所有JavaScript代码的全局对象。这个全局对象Window具有自我引用的window属性代替了this属性。
局部变量被存储在调用对象中。在执行一个函数时,函数的参数和局部变量都是作为调用对象的属性而存储的。
对于无用的存储单元,JavaScript提供了一种无用存储单元收集的方法,自动释放无用的内存空间。
在JavaScript中声明一个变量的方法有:
var i;
var sum;
var i,sum;
var i =0;
var sum = 20;
var str = "hello";
如果一个变量被声明了,但是没有赋值,它的初始值就是undefined。
由var声明的变量是永久性的,用delete运算符来删除这些变量会引发错误。
在JavaScript中可以使用var语句多次声明同一个变量,而不造成错误。如果尝试给一个未用var声明的变量赋值,JavaScript会隐式地声明这个变量,不过这个变量将被创建为全局变量,即使是在一个函数体内。如果尝试读一个未声明的变量的值,JavaScript会生成一个错误。如果读一个声明后,未赋值的变量的值,将返回undefined。
在JavaScript中也类似于Java等其它语言,包括全局变量和局部变量,但是与Java等其它语言不同的是,它没有块级作用域,即在函数内,不论是什么位置声明的变量,在整个函数体内都有效。如下例:
var scope = "global";
function f(){
alert(scope); //显示"undefined",不是"global"
var scope = "local"; //变量在此处被初始化,在函数体内到处定义
alert(scope); //显示"local"
}
在JavaScript中,由于其变量内容的不同,变量被分为基本类型变量和引用类型变量。基本类型变量用八字节内存,存储基本数据类型(数值、布尔值、null和未定义)的值,引用类型变量则只保存对对象、数组和函数等引用类型的值得引用(即内存地址)。
不管是全局变量还是局部变量,JavaScrit都提供了一个独立的对象来存储它们。
全局变量被存储在全局对象中。JavaScript解释器开始运行时,首先要做的事情之一就是创建一个全局对象,而所有的全局变量都是作为属性被存储在这个全局对象之中。此外JavaScript解释器还会用预定义的值和函数来初始化全局对象的许多属性,如Infinity、parseInt和Math等。在程序的顶层代码中,可以使用关键字this来引用这个全局变量。而在客户端JavaScript中,Window对象代表浏览窗口,它是包含在该窗口中的所有JavaScript代码的全局对象。这个全局对象Window具有自我引用的window属性代替了this属性。
局部变量被存储在调用对象中。在执行一个函数时,函数的参数和局部变量都是作为调用对象的属性而存储的。
对于无用的存储单元,JavaScript提供了一种无用存储单元收集的方法,自动释放无用的内存空间。
相关文章推荐
- JavaScript 变量声明提升
- JavaScript中的变量定义与储存介绍
- 新手上路之JavaScript 全局变量与局部变量同名问题 详解
- JavaScript的变量提升(转自CSDN_blog sunxing007用户)
- JavaScript判断变量是否为undefined两种方式差异
- (2)javascript的基本语法、数据结构、变量
- JavaScript中变量提升 Hoisting
- JavaScript-变量与作用域链
- javaScript全局变量和局部变量声明
- JavaScript 变量作用域及闭包第1/2页
- JavaScript红宝书笔记:(第四章)变量、作用域、内存
- JavaScript 笔记(2) -- 类型转换 & 正则表达 & 变量提升 & 表单验证
- javascript系列之变量对象
- JavaScript 中对变量和函数声明的“提前”
- Javascript监视变量变化
- JavaScript的变量:变量提升
- 你根本不懂Javascript(1): 类型、值和变量
- Cocos2d-x的SprideMonkey的JavaScript与C++的交互(三) - 全局变量Obj的操作
- 透过一道面试题来探探JavaScript中执行上下文和变量对象的底
- 关于JavaScript的全局变量的问题