1、标识符
标识符的首字母必须是一个字母、下划线、或者或数字
标识符不能是关键字或保留字
2、注释
单行注释://单行注释
多行注释:/多行注释/
Js语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾
3、关键字
4、保留字
5、变量
声明变量可使用var关键字(var关键字,声明的变量是该变量在作用域中的局部变量,不使用var创建的变量是全局变量)。
var message;
可以声明变量时,赋初值。
var message = “success”
6、数据类型
JS有5中简单数据类型【基本数据类型】,undefine、null、boolean、number、string
以及以中复杂的数据类型Object【本质是由一组无序的键值对组成】
1、Undefined类型
Undefined类型只有一个值,即undefined。在对一变量没有初始化时,这个变量的值就是undefined。
例:
var message;
alert(message == undefined) ; // true
注:undefined值,是变量已声明,但没有初始化。不是未声明!!!
2、Null类型
Null类型是第二个只有一个值的数据类型,这个值就是null,从逻辑上看,null值表示一个空对象指针,而这个也正是使用typeof检测null值,返回Object的原因。
Var car = null;
Alert (typeof car); // object
注:
如果定义一个变量准备用来保存对象,那么最好将该变量初始化为null而不是其它值。这样可以通过判断其值是否为null,得知变量是否已经引用了一个对象。
实际上,undefined派生自null,因此ECMA-262规定对它们的相等性测试要返回“true”:
alert(car == undefined); // true
3、Boolean类型
该类型只有两个值true、false。注意boolean类型的字面值true、false是区分大小写的。True和False。但是 ECMAScript中所有类型的值都有与这两个boolean值等价的值。要将一个值转换为其对应的boolean值,可以调用转型函数Boolean();
隐式转换: var msg=“ok”; if(msg)…
4、Number类型
可以表示整数和浮点数,数值可以使用十进制、八进制、十六进制来表示。但在计算式都被转换成十进制。
var num=10; //十进制表示
var numb=070; //八进制的56
var numb2=0XA; //十六进制的10
浮点数
包含小数点,并在小数点后面必须至少有一位数字,小数字前可以没有数字(不推荐)。
由于保存浮点数需要的内存空间是整数的两倍,因此ECMAScript会不失时机的将浮点值转换为整型值。如:
Var flo = 1.0 ;
Var flo1 = 1. ;
可以使用科学记数法表示数值:var num = 3e-2;// 0.03
Number类型采用 IEEE754格式,浮点数的精度远不如整数。如0.1和0.2相加的结果不是0.3,而是0.30000000000000004
数据范围
最小数值保存在Number.MIN_VALUE中,在大多数浏览器中,这个值是5e-324;最大值在Number.MAX_VALUE中,值是1.7976931348623157e+308。如果计算的结果超出数值范围,那么这个数值将被自动转换成特殊的Infinity(Number.POSITIVE_INFINITY)值。如果这个值是负值,则地转换成-infinity(Number.NEGATIVE_INFINITY)。
判断数值是否在范围内,可使用函数 isFinite(数值):
isFinite(33);//true
isFinite(Number.POSITIVE_INFINITY);//false
NaN
即非数值(Not a Number),表示一个本来要返回数值的操作数未返回数值的情况(一种异常情况,这样就不会抛出错误了)。例如,在其他编程语言中,任何数除以0都会导致错误,从而停止代码执行。但在ECMAScript中,返回NaN。
NaN有两个非同寻常的特点。首先,任何涉及NaN的操作都会返回NaN。其次,NaN与任何值都不等,包括NaN自身。
isNaN(变量)函数,用以测试参数是否“不是数值”,不是数值时返回true。
isNaN(NaN); //true
isNaN(10); // false
isNaN(“10”);// false(“10”可以转换为10)
isNaN(“blue”);// true (不可以转换为数值)
isNaN(true);// false(true可被转换为1)
数值转换
有3个函数可以实现把非数值转换为数值:Number()、parseInt()、parseFloat()。
Number()函数转换规则:
boolean:true->1,false->0
Null: 0
Undefined:NaN
字符串:内容是数值的转换为数值,其它转换为NaN。
对象:调用对象的valueof(),如果是NaN,则调用toString()。
例:
Number(“china”); // NaN
Number(“”); // 0
Number(“00011”); // 11
Number (true); // 1
Number(“0x9”); // 9
parseInt()方法
在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格。如果第一个不是数字或负号,返回NaN。如果字符串前面是数字后面是其它字符,则取前面的数字。如果是以0开头,转换成8进制数,以0X开头解析为16进制数。
parseInt(“123abc”); // 123
parseInt(“”);// NaN Number(“”);// 0
parseInt(“0xA);// 0XA
parseInt(22.5);// 22
parseInt(“070”);// 070(8进制)56D
parseInt(“70”);// 70
parseInt( , )函数还提供了第2个参数,用以确定要转换的数值进制。当指定进制时,被转换的16进制和8进制数,可以不要0X和0开头。
parseInt(“0xFA”,16); //175
parseInt(“FA”,16);// 175
parseInt(“FA”);// NaN
parseInt(“10”8); //8
parseInt(“10”,10); //10
parseFloat()
从第一个字符开始解析,当遇到无效的字符或第二个小数点为止。
始终忽略前导的0。但16进制的字符串始终会转换为0,只能解析10进制值。如果解析的数值没有小数点,则返回整数类型。
parseFloat(“123abc”);// 123
parseFloat(“0xa”);// 10
parseFloat(“22.5”);//22.5
parseFloat(“22.22.22”)????/ 22.22
parseFloat(“0908.5”);//908.5
parseFloat(“3.14e5”);// 314000
5、String类型
由16位Unicode字体组成的字符序列。可以由(“”)或(‘’)表示,但需成对使用。
转换为字符串
数值、boolean、对象、字符串都有toString()方法。null和undefined没有toString()方法。一般情况下toString()方法没有参数,也可以通过参数,指定要转换的数值类型的进制。
如var num =10;
Alert(num.toString(8));//12
Alert(num.toString(16));//A
注:在不知道要转换的值是否是null或undefined时,可使用String()方法。将任何类型转换为字符串。
String(null);// 返回“null”
Var val;
Alert(String(val));//返回”undefined”
6、Object类型
ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过new操作符后跟对象类型来创建。而创建Object类型的实例并为其添加属性和方法,就可以创建自定义对象。
Var obj = new Object();