JavaScript的引用
- 内部引用,在
<script type="text/javascript"></script>
标签对中直接编写。 - 外部引用,
<script type="text/javascript" src="java.js"></script>
- 行内引用,将程序代码作为某个元素的事件属性值,或超链接的href属性值。
JavaScript基本语法
- 区分大小写
Html并不区分大小写,但是JavaScript严格区分大小写。在输入语言的关键字、函数名、变量以及其他标识符时,都必须采取一致的大小写形式。 - 空白符和换行符
JavaScript会忽略关键字、变量名、数字、函数名或其他各种元素实体之间的空格、制表符或换行符(除非这些空格是字符串常量的一部分)。 - 注释
//为单行注释
/*这是多行注释
//多行注释里可以嵌套单行注释
但是多行注释里不可再嵌套单行注释*/
/*比如这样,/*会引起混乱*/ */
4.JavaScript保留关键字
这些保留字不能被用做标识符。
abstract、arguments、boolean、break、byte、case、catch、char、class*、const、continue、debugger、default、delete、do、double else enum*、eval、export*、extends* false final finally float
for、function、goto、if、implements、import*、in、instanceof、int 、interface、let、long、native、new、null、package、private、protected 、public、return、short、static、super*、switch、synchronized、this、throw 、throws、transient、true、try、typeof、var、void、volatile、while、with、yield。
标*的关键字是ECMAScript5新添加的。
数据类型与变量
数值型
与其他语言不同,JavaScript中的数值包括整数和浮点数,所有数值都以双精度浮点型来表示。
- 十进制数
- 按照ECMA-262的语法规则,十进制常数可以使以下任意一种(括号内的可以省略)
十进制数.(十进制数)(指数)
十进制数(指数)
以下写法都正确:
10 177.5 -2.70 -1.3E2 3.e-5 128e+100
以科学计数法表示时,指数放在e后面,e不区分大小写 - 十六进制
以0x开始,后面紧跟十六进制数。x和十六进制数的字母都不区分大小写。 - 八进制
以0开始 - 特殊值Infinity
当一个数值或数值表达式的值超过了可表示的最大值的范围,将被赋值为Infinity,反之则赋值为-Infinity。所有的Infinity值都相等,且与其他数值进行运算的结果仍为Infinity。 - 特殊值NaN
其含义是“not a number”。当一个undefined表达式结果为数值型数据时,该数值型数据就是NaN。例如0/0运算,或对Indinity求正弦,或将Infinity和-Infinity相加时,结果都是NaN。
可以用isNaN语句检测数值是否为NaN。
if(isNaN(x))
{alert("x是NaN");}
- 字串型
JavaScript不区分字符和字符串。
可以使用charAt()从字符串中提取字符。
var name="Mike";
var thirdLetter=name.charAt(2);
字符编号从0开始,此语句的意思是取出name字符串的第三个字符“k”。
以下为常用转义字符表
序列 | 代表字符 |
---|---|
\0 | Null字符(\u0000) |
\b | 退格符(\u0008) |
\t | 水平制表符(\u0009) |
\n | 换行符(\u000A) |
\v | 垂直制表符(\u000B) |
\f | 换页符(\u000C) |
\r | 回车符(\u000D) |
\" | 双引号(\u0022) |
\' | 撇号或单引号(\u0027) |
\\ | 反斜杠(\u005C) |
\f | ♀ |
\OOO | 八进制整数,范围000~377 |
\XHH | 十六进制整数,范围00~FF |
8.Boolean型
取值只有true和false
特殊数据类型
- 无定义数据类型
对一个变量只声明而不赋值,或者赋予一个不存在的属性值,就会使改变量的值为undefined。 - 空值null
null是表示什么都没有的占位符。与undefined的区别是,null表示该变量被赋予了一个空值,undefined表示变量尚未被赋值。
变量声明
JavaScript与java和C语言之间的一个重要差别:JavaScript是无类型的,它的变量可以存放任何数据类型的值。先把一个数值赋给变量,再用一个字符串赋给这个变量也是可以的。
变量声明用var,但变量声明不是必须的。
运算符与表达式
JavaScript大部分运算符都与C语言、java的运算符相同,这里只说部分:
- 比较运算符
===等于(且类型相同)
!==不等于(或类型不同)
- 位运算符
例如3&5,首先3会被转换成二进制数00000011,5会被转换成00000101,而00000011&00000101的结果是,00000001,转换为十进制数为1。
运算符 | 含义 | 举例 | 步骤 | 结果 |
---|---|---|---|---|
& | 位与 | 3&5 | 00000011&00000101 | 1 |
| | 位或 | 35 | 00000011| 00000101 | 7 |
^ | 位异或 | 3^5 | 00000011^00000110 | 6 |
~ | 位非 | ~3 | ~00000011=11111100 | -4 |
<< | 左移位(空位补0) | 4<<3 | 00000100变成00100000 | 32 |
>> | 右移位(空位补符号位) | -9>>2 | 11110111变成11111101 | -3 |
>>> | 右移位(空位补0) | 32>>>3 | 00100000变成00000100 | 4 |
- 逗号运算符
“,”将多个表达式连接成一个表达式,新表达式的值为最后一个表达式的值。
如
var a,b,c;
a=(b=5,c=7,d=11);
doucument.write('a='+a+' b='+b+' c='+c);
输出为:a=11 b=5 c=11
- void运算符
void运算符用来指明一个表达式无返回结果
var a,b;
a=void(b=5);
此时,a=underfined,b=5
- typeof运算符
typeof运算符返回一个字符串,指明其操作数的数据类型。 - 对象运算符
“.”运算符,用来连接对象及其属性或方法
“[]”运算符,连接对象及其属性(与“.”等价)、引用数组元素。
“new”运算符,用来创建对象。既可以用来创建自定义对象,也可以用来创建内置对象的实例。要删除一个对象,应该将他的值置为null
“delete”运算符可以删除数组中的元素。
例如
var array=['1','2','3','4'];
delete array[2];
此时array数组为:1,2,,4(3被删除了,但是还留着一个空位。而且不是undefined)
控制语句(与C语言类似,略过)
if、else if、if else、switch、while、do while、for与C语言类似,我认为没有复述的必要,就不写了。
函数
自定义函数
定义函数要使用function关键字
fuction 函数名 (参数列表)
{
程序语句;
return 值;}
注意:
- 函数名必须唯一,且区分大小写。
- 参数可以是常量、变量或表达式。
- 参数列表中有多个参数时,参数间用逗号“,”隔开。
- 定义参数并不会执行组成函数的语句,只有调用函数时,函数才会执行。
- 如果函数省略了return表达式,或者没有return表达式,函数会返回一个undefined值。
对象和数组
对象
对象使用运算符new来创建,在new之后必须有用于初始化对象的构造函数名。可以用下面的方式创建一个空对象,该对象不包含任何属性:
var o = new Object();
或者用构造函数的方法创建对象
function Student(name)
{this.name = name;}
studentOne=new Student("Jane");
上述语句建立了一个叫studentOne的新对象,对象的属性为studentOne.name。
方法
方法就是通过对象调用的函数,可以将函数赋给任何变量,甚至付给一个对象任何属性。在方法的主体内部,关键字this的值会变成调用该方法的对象。
函数是存储在变量中的值,而这个变量也是全局对象的一个属性。当调用一个函数时,实际上是调用全局对象的一个方法。
例如
//定义函数
function Area(){
return this.width*this.height;}
function circle()
{//初始化对象的属性
this.width=12;
this.height=22;
//定义对象的方法
this.area=Area;}
数组
在JavaScript中,数组可以用构造函数Array()和运算符new来创建。
可以有三种方式调用构造函数Array()
第一种是无参数调用,用这种方法创建的是一个空数组。
var a = new Array();
第二种方法允许用户指定数组的前若干个元素的值。这种形式的构造函数带有一个参数列表,每个参数都指定一个元素值,该元素值可以为任何类型。
var a = new Array(1,2,3,4,5,"test,test");
第三种方法是给该对象传递一个数字参数,该数字指定数组的长度。
var a = new Array(10);
var a = [1,2,3,4,5];
var b = [[1,{x:1,y:2}],[2,{m:3,n:4}]];
//使用了对象直接量
JavaScript内部对象
Object对象
Object对象提供了创建自定义对象的简单方式,不需要再定义构造函数,可以在程序运行时对对象随意添加属性。
function out(attr)
{document.write(student[attr]+" ");
}
var student=new Object();
student.name="Jane";
student.age="18";
out("name");
out("age");
输出的结果是Jane 18
Date对象
方法 | 描述 |
---|---|
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6)。 |
getMonth() | 从 Date 对象返回月份 (0 ~ 11)。 |
getFullYear() | 从 Date 对象以四位数字返回年份。 |
getYear() | 请使用 getFullYear() 方法代替。 |
getHours() | 返回 Date 对象的小时 (0 ~ 23)。 |
getMinutes() | 返回 Date 对象的分钟 (0 ~ 59)。 |
getSeconds() | 返回 Date 对象的秒数 (0 ~ 59)。 |
getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999)。 |
var time = new Date();
alert("日期:"time.getFullYear()+"-"+time.getMonth()+"-"+time.getDate()+"星期:"+time.getDay()+"时间:"+time.getHours()+":"+time.getMinutes()+":"+time.getSeconds()+"-");
字符串对象
- 数组的length属性
用来说明这个数组所包含的元素个数。数组可能包含未定义的元素,所以属性length总是比数组最多元素的个数大1。数组的length属性是自动更新的。 - anchor方法
var txt="Hello world!";
document.write(txt.anchor("myanchor"));
上面的代码将输出为纯粹的 HTML:
<a name="myanchor">Hello world!</a>
- 字符串转换成HTML代码
//大号字体
var str="Hello world!";
//大号字体
document.write(str.big()+"<br>");
//粗体
document.write(str.bold()+"<br>");
//返回字符串对象中的指定位置的字符。
document.write("字符串对象中1位置(第二个字符)的字符为"+str.charAt(1)+"<br>");
//字体颜色
document.write(str.fontcolor("red")+"<br>");
//字符串搜索,第一次出现的位置
document.write("l第一次出现的位置:"+str.indexOf("l")+"<br>");
//字符串搜索,最后一次出现的位置
document.write("l最后一次出现的位置:"+str.lastIndexOf("l")+"<br>");
//link超链接
document.write(str.link("hhhh.html")+"<br>");
- search方法
与indexOf类似,语法为
var str="Hello world!";
var regex="l";
document.write(str.search(regex));
- split方法,将字符串分隔开
var str="Hello,this is a test,1,2,3";
var regex=/,/;
var len=new Array;
splitString = str.split(regex);
for(i=0;i<splitString.length;i++)
{document.write(splitString[i]+"<br>");}
以“,”为标志,每次遇到一个“,”都会将字符串分隔开
- 字符串合并
var str = "";
str += "<html><head><title>title</title></head>";
str += "<body><h1>h1</h1>";
str += "<hr>aass</html>";
document.write(str);
数组对象
- join方法
join方法将一个数组的所有元素转换为字符串,并把这些字符串连接起来,可以任意指定一个字符串来分隔结果字符串中的元素,如果未指定分隔字符串,将使用“,”作为分隔符。
var a=[1,2,3];
s1=a.join();
s2=a.join(",");//中文的逗号
alert(s1+"\n"+s2);
- reverse方法
reverse方法在已有的数组元素进行颠倒重排。
var a=[1,2,3,4]
alert(a.reverse());
- sort方法
可以对数组排序。
var a=[4,5,1,2]
alert(a.sort());
- slice方法
slice方法返回的是指定数组的一个子数组。带有 两个参数,一个是子数组的起始点,一个是子数组的终止点。
var a=[1,2,3,4,5,6]
alert(a.slice(0,3)+"\n"+a.slice(2,4));
- splice方法
splice可以把元素从数组中删除。与delete不同的是,被插入或者被删除的元素会移位,保持数组的连续性。
alert(a.splice(n));
//删除数组第一个元素到第n+1个元素
alert(a.splice(n,3));
//删除数组第n+1个元素起的三个元素
math对象
查到的资料太长了,而且并不都很常用。链接:
math对象的属性和方法
with语句
如果频繁地使用某对象的多个属性或方法,只需要在()中写上改对象的名称,在随后的程序语句块中,不用每个属性名前都加上对象实例名和“.”了。
例如
var time=new Date;
with(time)
{alert(getMonth()+"月"+getDate()+"日");
参考书籍:精通JavaScript动态网页编程 王俊杰编著 人民邮电出版社