关于javascript,第一个比较重要的概念是变量,变量的工作机制是javascript的基本特性。实际上,变量是标识符的一种。本文将详细介绍变量和标识符
定义
标识符(Identifier)就是一个名字,用来对变量、函数、属性、参数进行命名,或者用做某些循环语句中的跳转位置的标记
//变量 var Identifier = 123; //属性 (new Object).Identifier = 'test'; //函数及参数 function IdentifierName(Identifier1){}; //跳转标记 Identifier: for(var i = 0; i < 5; i++){ if(i == 3){ break Identifier; } }
在日常生活中,有些东西是固定不变的,有些东西则会发生变化。例如,人的姓名和生日是固定不变的,但心情和年龄却会随着时间变化而变化。人们把那些会发生变化的东西称为变量
当程序需要将值保存起来以备将来使用时,便将其赋值给一个变量。变量(variable)是一个用于保存值的占位符,可以通过变量名称来获得对值的引用
命名规则
在词法结构一文中,我们介绍到javascript是一门区分字母大小写的语言,且和其他任何编程语言一样,javascript保留了一些标识符为自己所用,保留字不能用做普通的标识符
[注意]保留字包括关键字、未来保留字、空字面量和布尔值字面量
保留字 ReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteral
javascript标识符名允许包含字母、数字、美元符号和下划线(但第一个字符不允许是数字)
//错误示范 6num //开头不能用数字 %sum //开头不能用除(_ $)外特殊符号,如(% + /等) sum+num //开头中间不能使用除(_ $)外特殊符号,如(% + /等)
javascript允许标识符中出现 Unicode字符全集中的字母和数字(包括中文)。因此,程序员也可以使用非英语语言或数学符号来书写标识符
var 测试文字 = 'test';
[注意]出于可移植性和易于书写的考虑,通常我们不使用扩展的ASCII或Unicode字符
通常驼峰格式是标识符命名的首选格式,第一个字母小写,剩下的每个单词的首字母大写
var myMoodToday = 'happy';
对于不同的数据类型,javascript有约定俗成的标识符名命名规则
类型 前缀 示例 数组(Array) a aItems 布尔值(Boolean) b bIsComplete 浮点数(Float) f fPrice 函数(Function) fn fnHandler 整数(Integer) i iItemCount 对象(Object) o oDIv1 正则表达式(RegExp) re reEmailCheck 字符串(String) s sUserName 变量()Variant v vAnything
变量声明
声明
在javascript中,使用一个变量之前应当先声明(declare),变量是使用关键字var(variable的缩写)来声明的
var i; var sum;
也可以通过一个var关键字来声明多个变量
var i ,sum;
赋值
把值存入变量的操作称为赋值(assignment)。一个变量被赋值以后,我们就说该变量包含这个值
给变量第一次赋值的过程,叫初始化
我们可以将变量的初始赋值和变量声明合写在一起
var message = 'hello'; var i=0,j=0,k=0;
如果未在var声明语句中给变量指定初始值,那么虽然声明了这个变量,但在给它存入一个值之前,它的初始值就是undefined
在for循环和for-in循环中同样可以使用var语句,这样可以更简洁地声明在循环语法内中使用的循环变量
for(var i=0; i<10; i++)console.log(i);
变量可以在声明时赋值,但不能有其他操作,如+=、-=等
var a = 2;//是正确的 var a += 2;//是错误的 var a = 2++;//是错误的,++只能用于变量,不能用于常量
重复声明
使用var语句重复声明变量是合法且无害的,如果重复声明且带有赋值操作,相当于重新赋值
遗漏声明
如果试图读取一个没有声明的变量的值,javascript会报错
javascript允许遗漏声明,即直接对变量赋值而无需事先声明,赋值操作将自动声明该变量
但是,在ECMAScript5严格模式中,给一个没有声明的变量赋值会报错
<script> 'use strict'; a = 5; console.log(a); </script>
变量特性
javascript变量是弱类型(也叫松散类型)的,所谓松散类型就是可以用来保存任何类型的数据