标识符
指变量,函数,属性的名字,或者函数的参数,
规则:1.第一个字符必须是一个字母,下划线,活一个美元符号;
2.其他字符可以是字母,下划线,美元符号或数字;
javascript关键字和保留字
在 JavaScript 中,一些标识符是保留关键字,不能用作变量名或函数名。有些保留关键字是作为 Javascript 以后扩展使用。(详见javascript高级程序设计p21页)
javascript变量
与代数一样,JavaScript 变量可用于存放值(比如 x=5)和表达式(比如 z=x+y)。
变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。
注意:1.变量必须以字母开头;
2.变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做);
3. 变量名称对大小写敏感(y 和 Y 是不同的变量);
4.javascript对大小写敏感;
定义变量时要用 var操作符,后加变量名(例:var:message);则定义了一个名字为message的变量;且改变量可以用来保存任何值(注意:象这种未初始化的变量,会保存一个特殊的值-undefined);
例:var message="hi"' message=100;
在这个例子中变量message保存了一个字符串,然后又被一个数字覆盖;
局部变量:
即在函数中使用一个var定义的一个变量,那么这个变量在函数完成后就会被销毁;
例如:Function test(){
var message=”hi”; //全局变量
}
test()
alert(message); //错误
全局变量
例:function test(){
message ="hi"; //全局变量
}
test();
alerrt(essage); //hi
这个例子省略了操作符,所以message成为全局变量,只要调用过一次test,则这个函数就有了意义;
在定义变量时也可以一条语句定义多个变量,只需要用逗号分开即可;
例:var message="hi",found-false,age=29;
这个例子定义了三个变量,可放在一条语句里完成;
数据类型
1.typeof操作符
用来检测给定变量的数据类型,且该操作符的操作数可以是变量也可以是数值字面量;
“undefined”-----表示该值未定义
“boolean”-----表示该值是布尔值
"string"----表示该值是字符串
"number"-----表示该值是数值
"object"-----表示该值是对象或者是null
"function"------表示该值是函数
例:var message ="some string";
alert(typeof message); //string;
alerrt(typeof (message)); //string;
alert(typeof 68); //number;
undefined 类型
在使用var生命变量但未对其加以初始化时,这个变量的值就是undefined,一般而言,不需用显示的把一个变量设置为undefined值,因为为经过初始化的值默认就会取得undefined值;
注意:对于初始化的变量和为声明的变量利用typeof操作符是都返回了undefined值;
NULL类型
null值表示一个空对象指针,可以通过将变量的值设置为 null 来清空变量。
如果定义的变量在将来用来保存对象,那么可以将该变量初始化为null而不是其他值,这样一来,只要检查努力了值就可以知道相应的变量是否保存了一个对象的引用;注意:位于null和undefined之间的操作符(==)总是返回true,不过,要记住,在定义变量的时候,不要把变量定义为unedfined,应该明确的让改变量保存null值;
Boolean类型
该类型只有两个字面值:true和false,要将一个值转换为对应的Boolean值,可以调用转型函数Boolean(),
例:var message =“hello”;
var messageabc=Boolean(massage);
在这个例子中message被转换成了一个Boolean值,且被保存在messageabc这个变量中。所以,对任何数据类型的值调用Boolean函数,而且总会根据转换值的数据类型返回一个Boolean值;
数据类型 转换为true的值 转换为false的值
Boolean true false
string 任何非空字符串 “ ”空字符串
Number 任何菲零数字值(包括无穷大) 0和NaN
object 任何对象 null
Undefined 不适用 undefined
Number类型
1.浮点数值
浮点数值要求该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字,如果小数点后面没有跟任何数字,那么这个数值就可以作为整数数值来保存;
例:var fnumber=1.1 //有效;
var fnumber=10.0 //小数点后面没有数字解析为10
对于那些极大或绩效的数值,可以使用科学计数法;
例: var fnumber=3.125e7; //31250000
var fnumber=3e-17; //.00000000000000003
注意: 永远不要测试某个特定的浮点数值;浮点数值计算会产生摄入误差。
2.数值范围
由于内存的限制,在大多数浏览器中,最小数值保存在Number.MIN_VALUE, 这个值是5e-324;最大数值保存在Number .MAX_VALUE中 ,这个值是1.7976937348623157e+308;如果某次计算的结果超出了一个javascrpt数值范围的值,那么这个数值会自动转换成特殊的Infinity值,若被返回了正的或者负的Infinity值,那么该值将无法参与下一次的计算。要想确定一个数值是否是有穷的。可以通过isFinite()函数。若存在,则返回true,反之,则返回,false;
例:var result=Number.MAX_VALUE+Number.MAX_VALUE;
alert(isFinite(result)); //false
3.NaN 非数值
该数值用于表示一个本来要返回数值的操作数未返回数值的情况;
特点:1.任何涉及NaN的操作都会返回NaN;
2.NaN和任何值都不相等,包括本身;
针对NaN的特点,有了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否是“不是数值”,该函数在接受到一个值后,会常试将这个值转化为数值,而任何不能被转换为数值的值都会导致这个函数返回true。
例:alerrt(isNaN(NaN)); //true;
alert(isNaN(10)); //false;
注意:isNaN()也可使用于对象,在基于对象调用该函数时,会首先调用对象的alueOf()方法,然后确定该方法返回的值是否可以转换为数值,若不能,则基于这个返回值再调用toSring()方法,再测试返回值。
4.数值转换
Number()可用于任何数据类型,将非数值转换为数值;paresInt()和paresInt()专门用于把字符串转换为数值。
Number()函数的转换规则():
1.如果是Boolean值,true和false将被转换为1或0;
2.如果是数值,则是简单的传入和返回;
3.如果是null值,返回0;
4.如果是undefined,返回NaN;
5.如果是字符串:a.如果字符串只包含数字,则将其转换为十进制数值;
b.如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值;
c.如果字符串中包含有效的十六进制格式,则将其转换为相同大小的十进制整数值;
d.如果字符串是空的,则将其转换为0;
e.如果字符串包含上述格式之外的字符,则将其转换为NaN;
6.如果是对象,则调用对象的alueOf()方法,然后依照前面的规则转换返回的值;如果转换的简介国是NaN,则调用对象的toString方法,然后再依照前面的规则转换返回的字符串值。
5.String类型
字符串一旦创建,则它们的值就不可以改变要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串来填充该变量;
字符串的转换方法:将一个值转换为字符串;
1.toString()函数;针对数值,布尔值,对象和字符串;
例: var age=11; var agestring=age.toString() // "11"
var foud=true; var foundstrring =found.toString() // "true"
2.String(),可将任何类型的值转换为字符串;
规则:a. 如果有toString()方法,则调用该方法并返回相应的结果;
b.如果值是null,则返回“null”;
c.如果值是undefined,则返回“undefined”;
6.object类型
对象是遗嘱数据和功能的集合,对象可以通过执行new操作符后跟要创建的对象类型名称来创建;而创建object类型的实例并为其添加属性或方法,就可以创建自定义对象;
例: var o =new Object();
Object 对象
Object 对象表示一个 HTML 元素。
元素用于在网页中包含对象,比如:图像、音频、视频、Java applet、ActiveX、PDF、Flash 等。
访问 Object 对象
您可以使用 getElementById() 来访问 元素:
varx = document.getElementById("myObject");
创建 Object 对象
您可以使用 document.createElement() 方法来创建 元素:
var x = document.createElement("OBJECT");
仅仅创建Objject的实例并没有什么用处,但Object类型是所有他的实例的基础,Object类型所具有的任何属性和方法页同样存在于更具体的对象中;
Object的每个实例都具有的属性和方法:
1.constructor :保存着用于创建当前对象的函数; 对于前边的例子而言,构造函数就是Object;
2.hasOwnProperty(propertyName):用于检查给定的属性在当前的实例中是否存在,其中要注意的是:作为参数的属性名(propertyName)必须要以字符串形式指定,例如:o.hasOwnpropertty("name"))。
3.isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型;
4.propertyIsEnumerable(propertyName):用于检查给定的属性能否使用for-in语句来枚举,同时,作为参数的属性名必须要以字符串形式指定;
5.toLocaleString():返回对象的字符串表示,该字符串与执行环境地区对应;
6.toString():返回对象的字符串表示;
7.valueOf :返回对象的字符串,数值,或布尔值表示,通常与toString()方法的返回值相同;
注意:Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法。