将一个负数赋值给一个无符号数会出现什么情况呢

在正文开始之前,我们先看一下下面这段看似简单的代码:

    #include <stdio.h>
    #include<Windows.h>
    int main()
    {
    char a = -1;
    signed char b = -1;
    unsigned char c = -1;
    printf("a=%d,b=%d,c=%d", a, b, c);
    system("pause");
    return 0;
    }

那么这段代码的输出结果是什么呢?
答案是:
-1
-1
255

关于上面的代码,首先我们要说的缺省情况下的char内心是有符号的,所以第一条赋值语句和第二条赋值语句等效。

而对于第三条代码,我们将一个负数赋值给了一个无符号数,想想为什么会得到255这样的结果?

首先,对于-1,对于这个数来说,它本身是一个负数,我们知道在计算机中,所有内容的存储都是以二进制形式存储的,而且是以补码形式存储的。因此,对于这里的问题,我们需要分析下这个转变的过程。

以一个字节为例说明
-1的原码是:
10000001
反码:
11111110
补码:
11111111

好,我们现在再来看这个问题,计算机中存储了-1的补码,也就是11111111,这时候,我们将它赋值给了变量c,而c是无符号的,那么11111111就会被直接当做无符号数来转换,对于无符号数来说11111111的十进制表示就是255。所以这就是为什么最后会得到255的结果。

  • 27
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
第 一 章 概述 1-1 简述计算机程序设计语言的发展历程。 解: 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。 1-2 面向对象的编程语言有哪些特点? 解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++语言是目前应用最广的面向对象的编程语言。 1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点? 解: 结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把据和处理据的过程分离为相互独立的实体。当据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。 由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。 1-4 什么是对象?什么是面向对象方法?这种方法有哪些特点? 解: 从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一组属性和一组行为构成。 面向对象的方法将据及对据的操作方法放在一起,作为一个相互依存、不可分离的整体--对象。对同类型对象抽象出其共性,形成类。类中的大多据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通讯。这样,程序模块间的关系更为简单,程序模块的独立性、据的安全性就有了良好的保障。通过实现继承与多态性,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。 面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。 1-5 什么叫做封装? 解: 封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。 1-6 面向对象的软件工程包括哪些主要内容? 解: 面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。 1-7 简述计算机内部的信息可分为几类? 解: 计算机内部的信息可以分成控制信息和据信息二大类;控制信息可分为指令和控制字两类;据信息可分为值信息和非值信息两类。 1-8 什么叫二进制?使用二进制有何优点和缺点? 解: 二进制是基为2,每位的权是以2 为底的幂的进制,遵循逢二进一原则,基本符号为0和1。采用二进制码表示信息,有如下几个优点:1.易于物理实现;2.二进制运算简单;3.机器可靠性高;4.通用性强。其缺点是它表示的容量较小,表示同一个,二进制较其他进制需要更多的位。 1-9 请将以下十进制值转换为二进制和十六进制补码: (1)2 (2)9 (3)93 (4)-32 (5)65535 (6)-1 解: (1) (2)10 = (10)2 = (2)16 (2) (9)10 = (1001)2 = (9)16 (3) (93)10 = (1011101)2 = (5D)16 (4) (-32)10 = (11100000)2 = (E0)16 (5) (65535)10 = (11111111 11111111)2 = (FFFF)16 (6) (-1)10 = (11111111 11111111)2 = (FFFF)16 1-10 请将以下值转换为十进制: (1)(1010)2 (2)(10001111)2 (3)(01011111 11000011)2 (4)(7F)16 (5)(2D3E)16 (6)(F10E)16 解: (1)(1010)2 = (10)10 (2)(10001111)2 = (143)10 (3)(01011111 11000011)2 = (24515)10 (4)(7F)16 = (127)10 (5)(2D3E)16 = (11582)10 (6)(F10E)16 = (61710)10 1-11 简要比较原码、反码、补码等几种编码方法。 解: 原码:将符号字化为 0 或 1,的绝对值与符号一起编码,即所谓"符号──绝对值表示"的编码。 正的反码和补码与原码表示相同。 负数的反码与原码有如下关系: 符号位相同(仍用1表示),其余各位取反(0变1,1变0)。 补码由该反码的最末位加1求得。 第 二 章 C++简单程序设计 2-1 C++语言有那些主要特点和优点? 解: C++语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。C++一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是支持面向对象。 2-2 下列标识符哪些是合法的? Program, -page, _lock, test2, 3in1, @mail, A_B_C_D 解: Program, _lock, test2, A_B_C_D是合法的标识符,其它的不是。 2-3 例2.1中每条语句的作用是什么? #include void main(void) { cout<<"Hello!\n"; cout<<"Welcome to c++!\n"; } 解: #include //指示编译器将文件iostream.h中的代码 //嵌入到该程序中该指令所在的地方 void main() //主函名,void 表示函没有返回值 { //函体标志 cout<<"Hello!\n"; //输出字符串Hello!到标准输出设备(显示器)上。 cout<<"Welcome to c++!\n"; //输出字符串Welcome to c++! } 在屏幕输出如下: Hello! Welcome to c++! 2-4 使用关键字const而不是#define语句的好处有哪些? 解: const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试时仍然是可见的。 2-5 请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。 解: const float PI = 3.1416; float a = PI; 2-6 在下面的枚举类型中,Blue的值是多少? enum COLOR { WHITE, BLACK = 100, RED, BLUE, GREEN = 300 }; 解: Blue = 102 2-7 注释有什么作用?C++中有哪几种注释的方法?他们之间有什么区别? 解: 注释在程序中的作用是对程序进行注解和说明,以便于阅读。编译系统在对源程序进行编译时不理会注释部分,因此注释对于程序的功能实现不起任何作用。而且由于编译时忽略注释部分,所以注释内容不会增加最终产生的可执行程序的大小。适当地使用注释,能够提高程序的可读性。在C++中,有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字。另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作为注释处理。 2-8 什么叫做表达式?x = 5 + 7是一个表达式吗?它的值是多少? 解: 任何一个用于计算值的公式都可称为表达式。x = 5 + 7是一个表达式,它的值为12。 2-9 下列表达式的值是多少? 1. 201 / 4 2. 201 % 4 3. 201 / 4.0 解: 1. 50 2. 1 3. 50.25 2-10 执行完下列语句后,a、b、c三个变量的值为多少? a = 30; b = a++; c = ++a; 解: a:32 ; b:30 ; c:32; 2-11 在一个for循环中,可以初始化多个变量吗?如何实现? 解: 在for循环设置条件的第一个";"前,用,分隔不同的赋值表达式。 例如: for (x = 0, y = 10; x < 100; x++, y++) 2-12 执行完下列语句后,n的值为多少? int n; for (n = 0; n < 100; n++) 解: n的值为100 2-13 写一条for语句,计条件为n从100到200,步长为2;然后用while和do…while语句完成同样的循环。 解: for循环: for (int n = 100; n <= 200; n += 2); while循环: int x = 100; while (n <= 200) n += 2; do…while循环: int n = 100; do { n += 2; } while(n y) x = y; else // y > x || y == x y = x; 2-17 修改下面这个程序中的错误,改正后它的运行结果是什么? #include void main() int i int j; i = 10; /* 给i赋值 j = 20; /* 给j赋值 */ cout << "i + j = << i + j; /* 输出结果 */ return 0; } 解: 改正: #include int main() { int i; int j; i = 10; // 给i赋值 j = 20; /* 给j赋值 */ cout << "i + j = " << i + j; /* 输出结果 */ return 0; } 程序运行输出: i + j = 30 2-18 编写一个程序,运行时提示输入一个字,再把这个字显示出来。 解: 源程序: #include int main() { int i; cout <> i; cout << "您输入一个字是" << i << endl; return 0; } 程序运行输出: 请输入一个字:5 您输入一个字是5 2-19 C++有哪几种据类型?简述其值域。编程显示你使用的计算机中的各种据类型的字节。 解: 源程序: #include int main() { cout << "The size of an int is:\t\t" << sizeof(int) << " bytes.\n"; cout << "The size of a short int is:\t" << sizeof(short) << " bytes.\n"; cout << "The size of a long int is:\t" << sizeof(long) << " bytes.\n"; cout << "The size of a char is:\t\t" << sizeof(char) << " bytes.\n"; cout << "The size of a float is:\t\t" << sizeof(float) << " bytes.\n"; cout << "The size of a double is:\t" << sizeof(double) << " bytes.\n"; return 0; } 程序运行输出: The size of an int is: 4 bytes. The size of a short int is: 2 bytes. The size of a long int is: 4 bytes. The size of a char is: 1 bytes. The size of a float is: 4 bytes. The size of a double is: 8 bytes. 2-20 打印ASCII码为32~127的字符。 解: #include int main() { for (int i = 32; i<128; i++) cout << (char) i; return 0; } 程序运行输出: !"#$%G'()*+,./0123456789:;?@ABCDEFGHIJKLMNOP_QRSTUVWXYZ[\]^'abcdefghijklmnopqrstuvwxyz~s 2-21 运行下面的程序,观察其输出,与你的设想是否相同? #include int main() { unsigned int x; unsigned int y = 100; unsigned int z = 50; x= y - z; cout << "Difference is: " << x; x = z - y; cout << "\nNow difference is: " << x <<endl; return 0; } 解: 程序运行输出: Difference is: 50 Now difference is: 4294967246 注意,第二行的输出并非 -50,注意x、y、z的据类型。 2-22 运行下面的程序,观察其输出,体会i++与++i的差别。 #include int main() { int myAge = 39; // initialize two integers int yourAge = 39; cout << "I am: " << myAge << " years old.\n"; cout << "You are: " << yourAge << " years old\n"; myAge++; // postfix increment ++yourAge; // prefix increment cout << "One year passes...\n"; cout << "I am: " << myAge << " years old.\n"; cout << "You are: " << yourAge << " years old\n"; cout << "Another year passes\n"; cout << "I am: " << myAge++ << " years old.\n"; cout << "You are: " << ++yourAge << " years old\n"; cout << "Let's print it again.\n"; cout << "I am: " << myAge << " years old.\n"; cout << "You are: " << yourAge << " years old\n"; return 0; } 解: 程序运行输出: I am 39 years old You are 39 years old One year passes I am 40 years old You are 40 years old Another year passes I am 40 years old You are 41 years old Let's print it again I am 41 years old You are 41 years old 2-23 什么叫常量?什么叫变量? 解: 所谓常量是指在程序运行的整个过程中其值始终不可改变的量,除了用文字表示常量外,也可以为常量命名,这就是符号常量;在程序的执行过程中其值可以变化的量称为变量,变量是需要用名字来标识的。 2-24 变量有哪几种存储类型? 解: 变量有以下几种存储类型: auto存储类型:采用堆栈方式分配内存空间,属于一时性存储,其存储空间可以被若干变量多次覆盖使用; register存储类型:存放在通用寄存器中; extern存储类型:在所有函和程序段中都可引用; static存储类型:在内存中是以固定地址存放的,在整个程序运行期间都有效。 2-25 写出下列表达式的值: 1. 2 < 3 && 6 < 9 2. ! ( 4 5) || (6 > 2 解: 1. 1 2. -1 3. 0 4. 0 2-28 编写一个完整的程序,实现功能:向用户提问"现在正在下雨吗?",提示用户输入Y或N。若输入为Y,显示"现在正在下雨。"; 若输入为N,显示"现在没有下雨。";否则继续提问"现在正在下雨吗?" 解: 源程序: #include #include void main() { char flag; while(1) { cout <> flag; if ( toupper(flag) == 'Y') { cout << "现在正在下雨。"; break; } if ( toupper(flag) == 'N') { cout << "现在没有下雨。"; break; } } } 程序运行输出: 现在正在下雨吗?(Yes or No):x 现在正在下雨吗?(Yes or No):l 现在正在下雨吗?(Yes or No):q 现在正在下雨吗?(Yes or No):n 现在没有下雨。 或: 现在正在下雨吗?(Yes or No):y 现在正在下雨。 2-29 编写一个完整的程序,运行时向用户提问"你考试考了多少分?(0~100)",接收输入后判断其等级,显示出来。规则如下: 解: #include void main() { int i,score; cout <> score; if (score>100 || score<0) cout << "分值必须在0到100之间!"; else { i = score/10; switch (i) { case 10: case 9: cout << "你的成绩为优!"; break; case 8: cout << "你的成绩为良!"; break; case 7: case 6: cout << "你的成绩为中!"; break; default: cout << "你的成绩为差!"; } } } 程序运行输出: 你考试考了多少分?(0~100):85 你的成绩为良! 2-30 (1)实现一个简单的菜单程序,运行时显示"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示"据已经增加、删除、排序。"输入为Q时程序结束。要求使用if … else语句进行判断,用break、continue控制程序流程。 解: #include #include void main() { char choice,c; while(1) { cout <> c; choice = toupper(c); if (choice == 'A') { cout << "据已经增加. " << endl; continue; } else if (choice == 'D') { cout << "据已经删除. " << endl; continue; } else if (choice == 'S') { cout << "据已经排序. " << endl; continue; } else if (choice == 'Q') break; } } 程序运行输出: Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a 据已经增加. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d 据已经删除. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s 据已经排序. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q (2)实现一个简单的菜单程序,运行时显示"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示"据已经增加、删除、排序。"输入为Q时程序结束。要求使用Switch语句。 解: 源程序: #include #include void main() { char choice; while(1) { cout <> choice; switch(toupper(choice)) { case 'A': cout << "据已经增加. " << endl; break; case 'D': cout << "据已经删除. " << endl; break; case 'S': cout << "据已经排序. " << endl; break; case 'Q': exit(0); break; default: ; } } } 程序运行输出: Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a 据已经增加. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d 据已经删除. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s 据已经排序. Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q 2-31 用穷举法找出1~100间的质,显示出来。分别使用while,do-while,for循环语句实现。 解: 源程序: 使用while循环语句: #include #include void main() { int i,j,k,flag; i = 2; while(i <= 100) { flag = 1; k = sqrt(i); j = 2; while (j <= k) { if(i%j == 0) { flag = 0; break; } j++; } if (flag) cout << i << "是质." << endl; i++; } } 使用do…while循环语句: #include #include void main() { int i,j,k,flag; i = 2; do{ flag = 1; k = sqrt(i); j = 2; do{ if(i%j == 0) { flag = 0; break; } j++; }while (j <= k); if (flag) cout << i << "是质." << endl; i++; }while(i <= 100); } 使用for循环语句: #include #include void main() { int i,j,k,flag; for(i = 2; i <= 100; i++) { flag = 1; k = sqrt(i); for (j = 2; j <= k; j++) { if(i%j == 0) { flag = 0; break; } } if (flag) cout << i << "是质." << endl; } } 程序运行输出: 2是质. 3是质. 5是质. 7是质. 11是质. 13是质. 17是质. 19是质. 23是质. 29是质. 31是质. 37是质. 41是质. 43是质. 47是质. 53是质. 59是质. 61是质. 67是质. 71是质. 73是质. 79是质. 83是质. 89是质. 97是质. 2-32 比较Break语句与Continue语句的不同用法。 解: Break使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句,不能用在别处; continue 语句结束本次循环,接着开始判断决定是否继续执行下一次循环; 2-33 定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 解: 源程序见"实验指导"部分实验二 2-34 在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个,比较两个的大小,把结果提示给用户,直到猜对为止。分别使用while、do…while语句实现循环。 解: //使用while语句 #include void main() { int n = 18; int m = 0; while(m != n) { cout <> m; if (n > m) cout << "你猜的值太小了!" << endl; else if (n < m) cout << "你猜的值太大了!" << endl; else cout << "你猜对了!" << endl; } } //使用do…while语句 #include void main() { int n = 18; int m = 0; do{ cout <> m; if (n > m) cout << "你猜的值太小了!" << endl; else if (n < m) cout << "你猜的值太大了!" << endl; else cout << "你猜对了!" << endl; }while(n != m); } 程序运行输出: 请猜这个的值为多少?(0~~100):50 你猜的值太大了! 请猜这个的值为多少?(0~~100):25 你猜的值太大了! 请猜这个的值为多少?(0~~100):10 你猜的值太小了! 请猜这个的值为多少?(0~~100):15 你猜的值太小了! 请猜这个的值为多少?(0~~100):18 你猜对了! 2-35 定义枚举类型weekday,包括Sunday到Saturday七个元素在程序中定义weekday类型的变量,对其赋值,定义整型变量,看看能否对其赋weekday类型的值。 解: #include enum weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; void main() { int i; weekday d = Thursday; cout << "d = " << d << endl; i = d; cout << "i = " << i << endl; d = (weekday)6; cout << "d = " << d << endl; d = weekday( 4 ); cout << "d = " << d << endl; } 程序运行输出: d = 4 i = 4 d = 6 d = 4 2-36口袋中有红、黄、蓝、白、黑五种颜色的球若干个,每次从口袋中取出三个不同颜色的球,问有多少种取法。 解: #include using namespace std; int main() { enum color{red,yellow,blue,white,black}; enum color pri; int n,loop,i,j,k; char c; n=0; for(i=red;i<=black;i++) for(j=red;j<=black;j++) if(i!=j) { for(k=red;k<black;k++) if((k!=i)&&(k!=j)) { n=n+1; cout.width(4); cout<<n; for(loop=1;loop<=3;loop++) { switch(loop) { case 1: pri=(enum color)i; break; case 2: pri=(enum color)j; break; case 3: pri=(enum color)k; break; default: break; } switch(pri) { case red:cout<<"red";break; case yellow:cout<<"yellow";break; case blue:cout<<"blue";break; case white:cout<<"white";break; case black:cout<<"black";break; default: break; } } cout<<endl; } } cout<<"total:"<<n<<endl; } 2-37输出九九算表 #include #include using namespace std; int main() { int i,j; for(i=1;i<5;i++) cout<<setw(4)<<i; cout<<endl; cout<<endl; for(i=1;i<5;i++) { for(j=1;j<5;j++) cout<<setw(4)<<(i*j); cout<<endl; } } 第三章 函 3-1 C++中的函是什么?什么叫主调函,什么叫被调函,二者之间有什么关系?如何调用一个? 解: 一个较为复杂的系统往往需要划分为若干子系统,高级语言中的子程序就是用来实现这种模块划分的。C和C++语言中的子程序就体现为函。调用其它函的函被称为主调函,被其它函调用的函称为被调函一个很可能既调用别的函又被另外的函调用,这样它可能在某一个调用与被调用关系中充当主调函,而在另一个调用与被调用关系中充当被调函。 调用函之前先要声明函原型。按如下形式声明: 类型标识符 被调函名 (含类型说明的形参表); 声明了函原型之后,便可以按如下形式调用子函: 函名(实参列表) 3-2 观察下面程序的运行输出,与你设想的有何不同?仔细体会引用的用法。 源程序: #include int main() { int intOne; int &rSomeRef; = intOne; intOne = 5; cout << "intOne:\t\t" << intOne << endl; cout << "rSomeRef:\t" << rSomeRef << endl; int intTwo = 8; rSomeRef = intTwo; // not what you think! cout << "\nintOne:\t\t" << intOne << endl; cout << "intTwo:\t\t" << intTwo << endl; cout << "rSomeRef:\t" << rSomeRef << endl; return 0; } 程序运行输出: intOne: 5 rSomeRef: 5 intOne: 8 intTwo: 8 rSomeRef: 8 3-3 比较值调用和引用调用的相同点与不同点。 解: 值调用是指当发生函调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。这一过程是参值的单向传递过程,一旦形参获得了值便与实参脱离关系,此后无论形参发生了怎样的改变,都不会影响到实参。 引用调用将引用作为形参,在执行主调函中的调用语句时,系统自动用实参来初始化形参。这样形参就成为实参的一个别名,对形参的任何操作也就直接作用于实参。 3-4 什么叫内联函?它有哪些特点? 解: 定义时使用关键字 inline的函叫做内联函; 编译器在编译时在调用处用函体进行替换,节省了参传递、控制转移等开销; 内联函体内不能有循环语句和switch语句; 内联函的定义必须出现在内联函第一次被调用之前; 对内联函不能进行异常接口声明; 3-5 函原型中的参名与函定义中的参名以及函调用中的参名必须一致吗? 解: 不必一致,所有的参是根据位置和类型而不是名字来区分的。 3-6 重载函时通过什么来区分? 解: 重载的函的函名是相同的,但它们的参的个据类型不同,编译器根据实参和形参的类型及个的最佳匹配,自动确定调用哪一个。 3-7 编写函,参为两个unsigned short int型,返回值为第一个除以第二个参的结果,据类型为short int;如果第二个参为0,则返回值为-1。在主程序中实现输入输出。 解: 源程序: #include short int Divider(unsigned short int a, unsigned short int b) { if (b == 0) return -1; else return a/b; } typedef unsigned short int USHORT; typedef unsigned long int ULONG; int main() { USHORT one, two; short int answer; cout <> one; cout <> two; answer = Divider(one, two); if (answer > -1) cout << "Answer: " << answer; else cout << "Error, can't divide by zero!"; return 0; } 程序运行输出: Enter two numbers. Number one:8 Number two:2 Answer: 4 3-8 编写函把华氏温度转换为摄氏温度,公式为:C = (F - 32) * 5/9; 在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。 解: 源程序见"实验指导"部分实验三 3-9 编写函判断一个是否是质,在主程序中实现输入、输出。 解: #include #include int prime(int i); //判一个是否是质的函 void main() { int i; cout <> i; if (prime(i)) cout << i << "是质." << endl; else cout << i << "不是质." << endl; } int prime(int i) { int j,k,flag; flag = 1; k = sqrt(i); for (j = 2; j <= k; j++) { if(i%j == 0) { flag = 0; break; } } if (flag) return 1; else return 0; } 程序运行输出: 请输入一个:1151 1151是质. 3-10 编写函求两个整的最大公约和最小公倍。 解: 源程序: #include #include int fn1(int i,int j); //求最大公约的函 void main() { int i,j,x,y; cout <> i ; cout <> j ; x = fn1(i,j); y = i * j / x; cout << i << "和" << j << "的最大公约是:" << x << endl; cout << i << "和" << j << "的最小公倍是:" << y << endl; } int fn1(int i, int j) { int temp; if (i < j) { temp = i; i = j; j = i; } while(j != 0) { temp = i % j; i = j; j = temp; } return i; } 程序运行输出: 请输入一个正整:120 请输入另一个正整:72 120和72的最大公约是:24 120和72的最小公倍是:360 3-11 什么叫作嵌套调用?什么叫作递归调用? 解: 函允许嵌套调用,如果函1调用了函2,函2再调用函3,便形成了函的嵌套调用。 函可以直接或间接地调用自身,称为递归调用。 3-12 在主程序中提示输入整n,编写函用递归的方法求1 + 2 + … + n的值。 解: #include #include int fn1(int i); void main() { int i; cout <> i ; cout << "从1累加到" <<i << "的和为:" << fn1(i) << endl; } int fn1(int i) { if (i == 1) return 1; else return i + fn1(i -1); } 程序运行输出: 请输入一个正整:100 从1累加到100的和为:5050 3-13 编写递归函GetPower(int x, int y)计算x的y次幂, 在主程序中实现输入输出。 解: 源程序: #include long GetPower(int x, int y); int main() { int number, power; long answer; cout <> number; cout <> power; answer = GetPower(number,power); cout << number << " to the " << power << "th power is " <<answer <2; fib(1) = fib(2) = 1;观察递归调用的过程。 解: 源程序见"实验指导"部分实验三 3-15 用递归的方法编写函求n阶勒让德多项式的值,在主程序中实现输入、输出; 解: #include float p(int n, int x); void main() { int n,x; cout <> n; cout <> x; cout << "n = " << n << endl; cout << "x = " << x << endl; cout << "P" << n << "(" << x << ") = " << p(n,x) << endl; } float p(int n, int x) { if (n == 0) return 1; else if (n == 1) return x; else return ((2*n-1)*x*p(n-1,x) - (n-1)*p(n-2,x)) /n ; } 程序运行输出: 请输入正整n:1 请输入正整x:2 n = 1 x = 2 P1(2) = 2 请输入正整n:3 请输入正整x:4 n = 3 x = 4 P3(4) = 154 第 四 章 类 4-1 解释public和private的作用,公有类型成员与私有类型成员有些什么区别? 解: 公有类型成员用public关键字声明,公有类型定义了类的外部接口;私有类型的成员用private关键字声明,只允许本类的函成员来访问,而类外部的任何访问都是非法的,这样,私有的成员就整个隐蔽在类中,在类的外部根本就无法看到,实现了访问权限的有效控制。 4-2 protected关键字有何作用? 解: protected用来声明保护类型的成员,保护类型的性质和私有类型的性质相似,其差别在于继承和派生时派生类的成员函可以访问基类的保护成员。 4-3 构造函和析构函有什么作用? 解: 构造函的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,使此对象具有区别于彼对象的特征,完成的就是是一个从一般到具体的过程,构造函在对象创建的时候由系统自动调用。 析构函与构造函的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作,也就是专门作扫尾工作的。一般情况下,析构函是在对象的生存期即将结束的时刻由系统自动调用的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放。 4-4 据成员可以为公有的吗?成员函可以为私有的吗? 解: 可以,二者都是合法的。据成员和成员函都可以为公有或私有的。但据成员最好定义为私有的。 4-5 已知class A中有据成员int a,如果定义了A的两个对象A1、A2,它们各自的据成员a的值可以不同吗? 解: 可以,类的每一个对象都有自己的据成员。 4-6 什么叫做拷贝构造函?拷贝构造函何时被调用? 解: 拷贝构造函是一种特殊的构造函,具有一般构造函的所有特性,其形参是本类的对象的引用,其作用是使用一个已经存在的对象,去初始化一个新的同类的对象。在以下三种情况下会被调用:在当用类的一个对象去初始化该类的另一个对象时;如果函的形参是类对象,调用函进行形参和实参结合时;如果函的返回值是类对象,函调用完成返回时; 4-7 拷贝构造函赋值运算符(=)有何不同? 解: 赋值运算符(=)作用于一个已存在的对象;而拷贝构造函数会创建一个新的对象。 4-8 定义一个Dog 类,包含的age、weight等属性,以及对这些属性操作的方法。实现并测试这个类。 解: 源程序: #include class Dog { public: Dog (int initialAge = 0, int initialWeight = 5); ~Dog(); int GetAge() { return itsAge;} // inline! void SetAge (int age) { itsAge = age;} // inline! int GetWeight() { return itsWeight;} // inline! void SetWeight (int weight) { itsAge = weight;} // inline! private: int itsAge, itsWeight; }; Dog::Dog(int initialAge, int initialWeight) { itsAge = initialAge; itsWeight = initialWeight; } Dog::~Dog() //destructor, takes no action { } int main() { Dog Jack(2,10); cout << "Jack is a Dog who is " ; cout << Jack.GetAge() << " years old and"; cout << Jack.GetWeight() << " pounds weight.\n"; Jack.SetAge(7); Jack.SetWeight(20); cout << "Now Jack is " ; cout << Jack.GetAge() << " years old and"; cout << Jack.GetWeight() << " pounds weight."; return 0; } 程序运行输出: Jack is a Dog who is 2 years old and 10 pounds weight. Now Jack is 7 years old 20 pounds weight. 4-9 设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。 解: 源程序: #include class Rectangle { public: Rectangle (int top, int left, int bottom, int right); ~Rectangle () {} int GetTop() const { return itsTop; } int GetLeft() const { return itsLeft; } int GetBottom() const { return itsBottom; } int GetRight() const { return itsRight; } void SetTop(int top) { itsTop = top; } void SetLeft (int left) { itsLeft = left; } void SetBottom (int bottom) { itsBottom = bottom; } void SetRight (int right) { itsRight = right; } int GetArea() const; private: int itsTop; int itsLeft; int itsBottom; int itsRight; }; Rectangle::Rectangle(int top, int left, int bottom, int right) { itsTop = top; itsLeft = left; itsBottom = bottom; itsRight = right; } int Rectangle::GetArea() const { int Width = itsRight-itsLeft; int Height = itsTop - itsBottom; return (Width * Height); } int main() { Rectangle MyRectangle (100, 20, 50, 80 ); int Area = MyRectangle.GetArea(); cout << "Area: " << Area << "\n"; return 0; } 程序运行输出: Area: 3000 Upper Left X Coordinate: 20 4-10 设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函实现对人员信息的录入和显示。要求包括:构造函和析构函、拷贝构造函、内联成员函、带缺省形参值的成员函、聚集。 解: 本题用作实验四的选做题,因此不给出答案。 4-11 定义一个矩形类,有长、宽两个属性,有成员函计算矩形的面积 解: #include class Rectangle { public: Rectangle(float len, float width) { Length = len; Width = width; } ~Rectangle(){}; float GetArea() { return Length * Width; } float GetLength() { return Length; } float GetWidth() { return Width; } private: float Length; float Width; }; void main() { float length, width; cout <> length; cout <> width; Rectangle r(length, width); cout << "长为" << length << "宽为" << width << "的矩形的面积为:" << r.GetArea () << endl; } 程序运行输出: 请输入矩形的长度:5 请输入矩形的宽度:4 长为5宽为4的矩形的面积为:20 4-12 定义一个"据类型" datatype类,能处理包含字符型、整型、浮点型三种类型的据,给出其构造函。 解: #include class datatype{ enum{ character, integer, floating_point } vartype; union { char c; int i; float f; }; public: datatype(char ch) { vartype = character; c = ch; } datatype(int ii) { vartype = integer; i = ii; } datatype(float ff) { vartype = floating_point; f = ff; } void print(); }; void datatype::print() { switch (vartype) { case character: cout << "字符型: " << c << endl; break; case integer: cout << "整型: " << i << endl; break; case floating_point: cout << "浮点型: " << f << endl; break; } } void main() { datatype A('c'), B(12), C(1.44F); A.print(); B.print(); C.print(); } 程序运行输出: 字符型: c 整型: 12 浮点型: 1.44 4-13 定义一个Circle类,有据成员半径Radius,成员函GetArea(),计算圆的面积,构造一个Circle的对象进行测试。 解: #include class Circle { public: Circle(float radius){ Radius = radius;} ~Circle(){} float GetArea() { return 3.14 * Radius * Radius; } private: float Radius; }; void main() { float radius; cout <> radius; Circle p(radius); cout << "半径为" << radius << "的圆的面积为:" << p.GetArea () << endl; } 程序运行输出: 请输入圆的半径:5 半径为5的圆的面积为:78.5 4-14 定义一个tree类,有成员ages,成员函grow(int years)对ages加上years,age()显示tree对象的ages的值。 解: #include class Tree { int ages; public: Tree(int n=0); ~Tree(); void grow(int years); void age(); }; Tree::Tree(int n) { ages = n; } Tree::~Tree() { age(); } void Tree::grow(int years) { ages += years; } void Tree::age() { cout << "这棵树的年龄为" << ages << endl; } void main() { Tree t(12); t.age(); t.grow(4); } 程序运行输出: 这棵树的年龄为12 这棵树的年龄为16 第 五 章 C++程序的基本结构 5-1 什么叫做作用域?有哪几种类型的作用域? 解: 作用域讨论的是标识符的有效范围,作用域是一个标识符在程序正文中有效的区域。C++的作用域分为函原形作用域、块作用域(局部作用域)、类作用域和文件作用域. 5-2 什么叫做可见性?可见性的一般规则是什么? 解: 可见性是标识符是否可以引用的问题; 可见性的一般规则是:标识符要声明在前,引用在后,在同一作用域中,不能声明同名的标识符。对于在不同的作用域声明的标识符,遵循的原则是:若有两个或多个具有包含关系的作用域,外层声明的标识符如果在内层没有声明同名标识符时仍可见,如果内层声明了同名标识符则外层标识符不可见。 5-3 下面的程序的运行结果是什么,实际运行一下,看看与你的设想有何不同。 #include void myFunction(); int x = 5, y = 7; int main() { cout << "x from main: " << x << "\n"; cout << "y from main: " << y << "\n\n"; myFunction(); cout << "Back from myFunction!\n\n"; cout << "x from main: " << x << "\n"; cout << "y from main: " << y << "\n"; return 0; } void myFunction() { int y = 10; cout << "x from myFunction: " << x << "\n"; cout << "y from myFunction: " << y << "\n\n"; } 解: 程序运行输出: x from main: 5 y from main: 7 x from myFunction: 5 y from myFunction: 10 Back from myFunction! x from main: 5 y from main: 7 5-4 假设有两个无关系的类Engine和Fuel,使用时,怎样允许Fuel成员访问Engine中的私有和保护的成员? 解: 源程序: class fuel; class engine { friend class fuel; private; int powerlevel; public; engine(){ powerLevel = 0;} void engine_fn(fuel &f); }; class fuel { friend class engine; private; int fuelLevel; public: fuel(){ fuelLevel = 0;} void fuel_fn( engine &e); }; 5-5 什么叫做静态据成员?它有何特点? 解: 类的静态据成员是类的据成员的一种特例,采用static关键字来声明。对于类的普通据成员,每一个类的对象都拥有一个拷贝,就是说每个对象的同名据成员可以分别存储不同的值,这也是保证对象拥有自身区别于其它对象的特征的需要,但是静态据成员,每个类只要一个拷贝,由所有该类的对象共同维护和使用,这个共同维护、使用也就实现了同一类的不同对象之间的据共享。 5-6 什么叫做静态函成员?它有何特点? 解: 使用static关键字声明的函成员是静态的,静态函成员属于整个类,同一个类的所有对象共同维护,为这些对象所共享。静态函成员具有以下两个方面的好处,一是由于静态成员函只能直接访问同一个类的静态据成员,可以保证不会对该类的其余据成员造成负面影响;二是同一个类只维护一个静态函成员的拷贝,节约了系统的开销,提高程序的运行效率。 5-7 定义一个Cat类,拥有静态据成员HowManyCats,记录Cat的个体目;静态成员函GetHowMany(),存取HowManyCats。设计程序测试这个类,体会静态据成员和静态成员函的用法。 解: 源程序: #include class Cat { public: Cat(int age):itsAge(age){HowManyCats++; } virtual ~Cat() { HowManyCats--; } virtual int GetAge() { return itsAge; } virtual void SetAge(int age) { itsAge = age; } static int GetHowMany() { return HowManyCats; } private: int itsAge; static int HowManyCats; }; int Cat::HowManyCats = 0; void TelepathicFunction(); int main() { const int MaxCats = 5; Cat *CatHouse[MaxCats]; int i; for (i = 0; i<MaxCats; i++) { CatHouse[i] = new Cat(i); TelepathicFunction(); } for ( i = 0; i<MaxCats; i++) { delete CatHouse[i]; TelepathicFunction(); } return 0; } void TelepathicFunction() { cout << "There are " << Cat::GetHowMany() << " cats alive!\n"; } 程序运行输出: There are 1 cats alive! There are 2 cats alive! There are 3 cats alive! There are 4 cats alive! There are 5 cats alive! There are 4 cats alive! There are 3 cats alive! There are 2 cats alive! There are 1 cats alive! There are 0 cats alive! 5-8 什么叫做友元函?什么叫做友元类? 解: 友元函是使用friend关键字声明的函,它可以访问相应类的保护成员和私有成员。友元类是使用friend关键字声明的类,它的所有成员函都是相应类的友元函。 5-9 如果类A是类B的友元,类B是类C的友元,类D是类A的派生类,那么类B是类A的友元吗?类C是类A的友元吗?类D是类B的友元吗? 解: 类B不是类A的友元,友元关系不具有交换性; 类C不是类A的友元,友元关系不具有传递性; 类D不是类B的友元,友元关系不能被继承。 5-10 静态成员变量可以为私有的吗?声明一个私有的静态整型成员变量。 解: 可以,例如: private: static int a; 5-11 在一个文件中定义一个全局变量n,主函main(),在另一个文件中定义函fn1(),在main()中对n赋值,再调用fn1(),在fn1()中也对n赋值,显示n最后的值。 解: #include #include "fn1.h" int n; void main() { n = 20; fn1(); cout << "n的值为" <<n; } // fn1.h文件 extern int n; void fn1() { n=30; } 程序运行输出: n的值为30 5-12 在函fn1()中定义一个静态变量n,fn1()中对n的值加1,在主函中,调用fn1()十次,显示n的值。 解: #include void fn1() { static int n = 0; n++; cout << "n的值为" << n <<endl; } void main() { for(int i = 0; i i =+10; } void Y::g(X* x) { x->i ++; } class Z { public: void f(X* x) { x->i += 5; } }; #endif // MY_X_Y_Z_H 程序运行输出:无 5-14 定义Boat与Car两个类,二者都有weight属性,定义二者的一个友元函totalWeight(),计算二者的重量和。 解: 源程序: #include class Boat; class Car { private: int weight; public: Car(int j){weight = j;} friend int totalWeight(Car &aCar;, Boat &aBoat;); }; class Boat { private: int weight; public: Boat(int j){weight = j;} friend int totalWeight(Car &aCar;, Boat &aBoat;); }; int totalWeight(Car &aCar;, Boat &aBoat;) { return aCar.weight + aBoat.weight; } void main() { Car c1(4); Boat b1(5); cout << totalWeight(c1, b1) << endl; } 程序运行输出: 9 第 六 章 组、指针与字符串 6-1 组A[10][5][15]一共有多少个元素? 解: 10×5×15 = 750 个元素 6-2 在组A[20]中第一个元素和最后一个元素是哪一个? 解: 第一个元素是A[0],最后一个元素是A[19]。 6-3 用一条语句定义一个有五个元素的整型组,并依次赋予1~5的初值。 解: 源程序: int IntegerArray[5] = { 1, 2, 3, 4, 5 }; 或:int IntegerArray[] = { 1, 2, 3, 4, 5 }; 6-4 已知有一个组名叫oneArray,用一条语句求出其元素的个。 解: 源程序: nArrayLength = sizeof(oneArray) / sizeof(oneArray[0]); 6-5 用一条语句定义一个有5×3个元素的二维整型组,并依次赋予1~15的初值。 解: 源程序: int theArray[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }; 或:int theArray[5][3] = { {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12},{13,14,15} }; 6-6 运算符*和&的作用是什么? 解: *称为指针运算符,是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符,也是一个一元操作符,是用来得到一个对象的地址。 6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别? 解: 指针是一种据类型,具有指针类型的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。 6-8 定义一个整型指针,用new语句为其分配包含10个整型元素的地址空间。 解: 源程序: int *pInteger = new int[10]; 6-9 在字符串”Hello,world!”中结束符是什么? 解: 是NULL字符。 6-10 定义一个有五个元素的整型组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。 解: 源程序: #include int main() { int myArray[5]; int i; for ( i=0; i<5; i++) { cout << "Value for myArray[" << i <> myArray[i]; } for (i = 0; i<5; i++) cout << i << ": " << myArray[i] << "\n"; return 0; } 程序运行输出: Value for myArray[0]: 2 Value for myArray[1]: 5 Value for myArray[2]: 7 Value for myArray[3]: 8 Value for myArray[4]: 3 0: 2 1: 5 2: 7 3: 8 4: 3 6-11 引用和指针有何区别?何时只能使用指针而不能使用引用? 解: 引用是一个别名,不能为NULL值,不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。 6-12 声明下列指针:float类型变量的指针pFloat,char类型的指针pString和struct customer型的指针prec。 解: float *pfloat; char *pString; struct customer *prec; 6-13 给定float类型的指针fp,写出显示fp所指向的值的输出流语句。 解: cout << "Value == " << *fp; 6-14 程序中定义一个double类型变量的指针。分别显示指针占了多少字节和指针所指的变量占了多少字节。 解: double *counter; cout << "\nSize of pointer == "sizeof(counter); cout << '\nSize of addressed value == "<<sizeof(*counter); 6-15 const int * p1 和 int * const p2的区别是什么? 解: const int * p1 声明了一个指向整型常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;int * const p2声明了一个指针型常量,用于存放整型变量的地址,这个指针一旦初始化后,就不能被重新赋值了。 6-16 定义一个整型变量a,一个整型指针p,一个引用r,通过p把a的值改为10,通过r把a的值改为5 解: void main() { int a; int *p = &a; int &r = a; *p = 10; r = 5; } 6-17 下列程序有何问题,请仔细体会使用指针时应避免出现这个的问题。 #include int main() { int *p; *pInt = 9; cout << "The value at p: " << *p; return 0; } 解: 指针p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。 6-18 下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。 #include int Fn1(); int main() { int a = Fn1(); cout << "the value of a is: " << a; return 0; } int Fn1() { int * p = new int (5); return *p; } 解: 此程序中给*p分配的内存没有被释放掉。 改正: #include int* Fn1(); int main() { int *a = Fn1(); cout << "the value of a is: " << *a; delete a; return 0; } int* Fn1() { int * p = new int (5); return p; } 6-19 声明一个为整型,返回值为长整型的函指针;声明类A的一个成员函指针,其参为整型,返回值长整型。 解: long (* p_fn1)(int); long ( A::*p_fn2)(int); 6-20 实现一个名为SimpleCircle的简单圆类,其据成员int *itsRadius为一个指向其半径值的指针,设计对据成员的各种操作,给出这个类的完整实现并测试这个类。 解: 源程序: #include class SimpleCircle { public: SimpleCircle(); SimpleCircle(int); SimpleCircle(const SimpleCircle &); ~SimpleCircle() {} void SetRadius(int); int GetRadius()const; private: int *itsRadius; }; SimpleCircle::SimpleCircle() { itsRadius = new int(5); } SimpleCircle::SimpleCircle(int radius) { itsRadius = new int(radius); } SimpleCircle::SimpleCircle(const SimpleCircle & rhs) { int val = rhs.GetRadius(); itsRadius = new int(val); } int SimpleCircle::GetRadius() const { return *itsRadius; } int main() { SimpleCircle CircleOne, CircleTwo(9); cout << "CircleOne: " << CircleOne.GetRadius() << endl; cout << "CircleTwo: " << CircleTwo.GetRadius() << endl; return 0; }程序运行输出: CircleOne: 5 CircleTwo: 9 6-21 编写一个,统计一个英文句子中字母的个,在主程序中实现输入、输出。 解: 源程序: #include #include int count(char *str) { int i,num=0; for (i=0; str[i]; i++) { if ( (str[i]>='a' && str[i]='A' && str[i]<='Z') ) num++; } return num; } void main() { char text[100]; cout << "输入一个英语句子:" << endl; gets(text); cout << "这个句子里有" << count(text) << "个字母。" << endl; } 程序运行输出: 输入一个英语句子: It is very interesting! 这个句子里有19个字母。 6-22 编写函int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的位置,如果在s中没有与t匹配的子串,就返回-1。 解: 源程序: #include int index( char *s, char *t) { int i,j,k; for(i = 0; s[i] != '\0'; i++) { for(j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++, k++) ; if (t[k] =='\0') return i; } return -1; } void main() { int n; char str1[20],str2[20]; cout <> str1; cout <> str2; n = index(str1,str2); if (n > 0) cout << str2 << "在" << str1 << "中左起第" << n+1 << "个位置。"<<endl; else cout << str2 << "不在" << str1 << "中。" << endl; } 程序运行输出: 输入一个英语单词:abcdefgh 输入另一个英语单词:de de在abcdefghijk中左起第4个位置。 6-23 编写函reverse(char *s)的倒序递归程序,使字符串s倒序。 解: 源程序: #include #include void reverse(char *s, char *t) { char c; if (s < t) { c = *s; *s = *t; *t = c; reverse(++s, --t); } } void reverse( char *s) { reverse(s, s + strlen(s) - 1); } void main() { char str1[20]; cout <> str1; cout << "原字符串为:" << str1 << endl; reverse(str1); cout << "倒序反转后为:" << str1 << endl; } 程序运行输出: 输入一个字符串:abcdefghijk 原字符串为:abcdefghijk 倒序反转后为:kjihgfedcba 6-24 设学生人N=8,提示用户输入N个人的考试成绩,然后计算出平均成绩,显示出来。 解: 源程序: #include #include #define N 8 float grades[N]; //存放成绩的组 void main() { int i; float total,average; //提示输入成绩 for(i = 0; i < N; i++ ) { cout << "Enter grade #" <<(i +1) <> grades[i]; } total = 0; for (i = 0; i < N; i++) total += grades[i]; average = total / N; cout << "\nAverage grade: " << average << endl; } 程序运行输出: Enter grade #1: 86 Enter grade #2: 98 Enter grade #3: 67 Enter grade #4: 80 Enter grade #5: 78 Enter grade #6: 95 Enter grade #7: 78 Enter grade #8: 56 Average grade: 79.75 6-25 设计一个字符串类MyString,具有构造函、析构函、拷贝构造函,重载运算符+、=、+=、[],尽可能地完善它,使之能满足各种需要。(运算符重载功能为选做,参见第8章) 解: #include #include class MyString { public: MyString(); MyString(const char *const); MyString(const MyString &); ~MyString(); char & operator[](unsigned short offset); char operator[](unsigned short offset) const; MyString operator+(const MyString&); void operator+=(const MyString&); MyString & operator= (const MyString &); unsigned short GetLen()const { return itsLen; } const char * GetMyString() const { return itsMyString; } private: MyString (unsigned short); // private constructor char * itsMyString; unsigned short itsLen; }; MyString::MyString() { itsMyString = new char[1]; itsMyString[0] = '\0'; itsLen=0; } MyString::MyString(unsigned short len) { itsMyString = new char[len+1]; for (unsigned short i = 0; i<=len; i++) itsMyString[i] = '\0'; itsLen=len; } MyString::MyString(const char * const cMyString) { itsLen = strlen(cMyString); itsMyString = new char[itsLen+1]; for (unsigned short i = 0; i<itsLen; i++) itsMyString[i] = cMyString[i]; itsMyString[itsLen]='\0'; } MyString::MyString (const MyString & rhs) { itsLen=rhs.GetLen(); itsMyString = new char[itsLen+1]; for (unsigned short i = 0; i<itsLen;i++) itsMyString[i] = rhs[i]; itsMyString[itsLen] = '\0'; } MyString::~MyString () { delete [] itsMyString; itsLen = 0; } MyString& MyString::operator=(const MyString & rhs) { if (this == &rhs;) return *this; delete [] itsMyString; itsLen=rhs.GetLen(); itsMyString = new char[itsLen+1]; for (unsigned short i = 0; i itsLen) return itsMyString[itsLen-1]; else return itsMyString[offset]; } char MyString::operator[](unsigned short offset) const { if (offset > itsLen) return itsMyString[itsLen-1]; else return itsMyString[offset]; } MyString MyString::operator+(const MyString& rhs) { unsigned short totalLen = itsLen + rhs.GetLen(); MyString temp(totalLen); for (unsigned short i = 0; i<itsLen; i++) temp[i] = itsMyString[i]; for (unsigned short j = 0; j<rhs.GetLen(); j++, i++) temp[i] = rhs[j]; temp[totalLen]='\0'; return temp; } void MyString::operator+=(const MyString& rhs) { unsigned short rhsLen = rhs.GetLen(); unsigned short totalLen = itsLen + rhsLen; MyString temp(totalLen); for (unsigned short i = 0; i<itsLen; i++) temp[i] = itsMyString[i]; for (unsigned short j = 0; j<rhs.GetLen(); j++, i++) temp[i] = rhs[i-itsLen]; temp[totalLen]='\0'; *this = temp; } int main() { MyString s1("initial test"); cout << "S1:\t" << s1.GetMyString() << endl; char * temp = "Hello World"; s1 = temp; cout << "S1:\t" << s1.GetMyString() << endl; char tempTwo[20]; strcpy(tempTwo,"; nice to be here!"); s1 += tempTwo; cout << "tempTwo:\t" << tempTwo << endl; cout << "S1:\t" << s1.GetMyString() << endl; cout << "S1[4]:\t" << s1[4] << endl; s1[4]='x'; cout << "S1:\t" << s1.GetMyString() << endl; cout << "S1[999]:\t" << s1[999] << endl; MyString s2(" Another myString"); MyString s3; s3 = s1+s2; cout << "S3:\t" << s3.GetMyString() << endl; MyString s4; s4 = "Why does this work?"; cout << "S4:\t" << s4.GetMyString() << endl; return 0; } 程序运行输出: S1: initial test S1: Hello World tempTwo: ; nice to be here! S1: Hello World; nice to be here! S1[4]: o S1: Hellx World; nice to be here! S1[999]: ! S3: Hellx World; nice to be here! Another myString S4: Why does this work? 6-26 编写一个3×3矩阵转置的函,在main()函中输入据。 解: #include void move (int matrix[3][3]) { int i, j, k; for(i=0; i<3; i++) for (j=0; j<i; j++) { k = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = k; } } void main() { int i, j; int data[3][3]; cout << "输入矩阵的元素" << endl; for(i=0; i<3; i++) for (j=0; j<3; j++) { cout << "第" << i+1 << "行第" << j+1 <> data[i][j]; } cout << "输入的矩阵的为:" << endl; for(i=0; i<3; i++) { for (j=0; j<3; j++) cout << data[i][j] << " "; cout << endl; } move(data); cout << "转置后的矩阵的为:" << endl; for(i=0; i<3; i++) { for (j=0; j<3; j++) cout << data[i][j] << " "; cout << endl; } } 程序运行输出: 输入矩阵的元素 第1行第1个元素为:1 第1行第2个元素为:2 第1行第3个元素为:3 第2行第1个元素为:4 第2行第2个元素为:5 第2行第3个元素为:6 第3行第1个元素为:7 第3行第2个元素为:8 第3行第3个元素为:9 输入的矩阵的为: 1 2 3 4 5 6 7 8 9 转置后的矩阵的为: 1 4 7 2 5 8 3 6 9 6-27 编写一个矩阵转置的函,矩阵的维在程序中由用户输入。 解: #include void move (int *matrix ,int n) { int i, j, k; for(i=0; i<n; i++) for (j=0; j<i; j++) { k = *(matrix + i*n + j); *(matrix + i*n + j) = *(matrix + j*n + i); *(matrix + j*n + i) = k; } } void main() { int n, i, j; int *p; cout <> n; p = new int[n*n]; cout << "输入矩阵的元素" << endl; for(i=0; i<n; i++) for (j=0; j<n; j++) { cout << "第" << i+1 << "行第" << j+1 <> p[i*n + j]; } cout << "输入的矩阵的为:" << endl; for(i=0; i<n; i++) { for (j=0; j<n; j++) cout << p[i*n + j] << " "; cout << endl; } move(p, n); cout << "转置后的矩阵的为:" << endl; for(i=0; i<n; i++) { for (j=0; j<n; j++) cout << p[i*n + j] << " "; cout << endl; } } 程序运行输出: 请输入矩阵的维:3 输入矩阵的元素 第1行第1个元素为:1 第1行第2个元素为:2 第1行第3个元素为:3 第2行第1个元素为:4 第2行第2个元素为:5 第2行第3个元素为:6 第3行第1个元素为:7 第3行第2个元素为:8 第3行第3个元素为:9 输入的矩阵的为: 1 2 3 4 5 6 7 8 9 转置后的矩阵的为: 1 4 7 2 5 8 3 6 9 6-28 定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性,包括chage_name()和display()等函;display()使用cout语句显示姓名、街道地址、城市和邮编等属性,函change_name()改变对象的姓名属性,实现并测试这个类。 解: 源程序: #include #include class Employee { private: char name[30]; char street[30]; char city[18]; char zip[6]; public: Employee(char *n, char *str, char *ct, char *z); void change_name(char *n); void display(); }; Employee::Employee (char *n,char *str,char *ct, char *z) { strcpy(name, n); strcpy(street, str); strcpy(city, ct); strcpy(zip, z); } void Employee::change_name (char *n) { strcpy(name, n); } void Employee::display () { cout << name << " " << street << " "; cout << city << " "<< zip; } void main(void) { Employee e1("张三","平安大街3号", "北京", "100000"); e1.display(); cout << endl; e1.change_name("李四"); e1.display(); cout << endl; } 程序运行输出: 张三 平安大街3号 北京 100000 李四 平安大街3号 北京 100000 第 七 章 继承与派生 7-1 比较类的三种继承方式public公有继承、protected保护继承、private私有继承之间的差别。 解: 不同的继承方式,导致不同访问属性的基类成员在派生类中的访问属性也有所不同: 公有继承,使得基类public(公有)和protected(保护)成员的访问属性在派生类中不变,而基类private(私有)成员不可访问。 私有继承,使得基类public(公有)和protected(保护)成员都以private(私有)成员身份出现在派生类中,而基类private(私有)成员不可访问。 保护继承中,基类public(公有)和protected(保护)成员都以protected(保护)成员身份出现在派生类中,而基类private(私有)成员不可访问。 7-2 派生类构造函执行的次序是怎样的? 解: 派生类构造函执行的一般次序为:调用基类构造函;调用成员对象的构造函;派生类的构造函体中的内容。 7-3 如果在派生类B已经重载了基类A的一个成员函fn1(),没有重载成员函fn2(),如何调用基类的成员函fn1()、fn2()? 解: 调用方法为: A::fn1(); fn2(); 7-4 什么叫做虚基类?有何作用? 解: 当某类的部分或全部直接基类是从另一个基类派生而来,这些直接基类中,从上一级基类继承来的成员就拥有相同的名称,派生类的对象的这些同名成员在内存中同时拥有多个拷贝,我们可以使用作用域分辨符来唯一标识并分别访问它们。我们也可以将直接基类的共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只拥有一个拷贝,这样就解决了同名成员的唯一标识问题。 虚基类的声明是在派生类的定义过程,其语法格式为: class 派生类名:virtual 继承方式 基类名 上述语句声明基类为派生类的虚基类,在多继承情况下,虚基类关键字的作用范围和继承方式关键字相同,只对紧跟其后的基类起作用。声明了虚基类之后,虚基类的成员在进一步派生过程中,和派生类一起维护一个内存据拷贝。 7-5 定义一个Shape基类,在此基础上派生出Rectangle和Circle,二者都有GetArea()函计算对象的面积。使用Rectangle类创建一个派生类Square。 解: 源程序: #include class Shape { public: Shape(){} ~Shape(){} virtual float GetArea() { return -1; } }; class Circle : public Shape { public: Circle(float radius):itsRadius(radius){} ~Circle(){} float GetArea() { return 3.14 * itsRadius * itsRadius; } private: float itsRadius; }; class Rectangle : public Shape { public: Rectangle(float len, float width): itsLength(len), itsWidth(width){}; ~Rectangle(){}; virtual float GetArea() { return itsLength * itsWidth; } virtual float GetLength() { return itsLength; } virtual float GetWidth() { return itsWidth; } private: float itsWidth; float itsLength; }; class Square : public Rectangle { public: Square(float len); ~Square(){} }; Square::Square(float len): Rectangle(len,len) { } void main() { Shape * sp; sp = new Circle(5); cout << "The area of the Circle is " <GetArea () << endl; delete sp; sp = new Rectangle(4,6); cout << "The area of the Recta
javascript的官方文档 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目列表。再从该列表中选择要查看的主题。在打开所选主题后,就可以方便地链接到相关章节。 请尽情浏览 JScript 语言参考的各个部分,你会发现 JScript 语言有多么丰富。 特性 描述 JScript 特性(非-ECMA) JScript 目前的 ECMA 特性列表。 JScript 的特性 (ECMA) JScript 目前的非-ECMA 特性列表。 Microsoft Scripting 运行时特性 JScript 目前的 scripting 运行时特性列表。 语言元素 描述 ! 运算符 对表达式进行逻辑非运算。 != 运算符 比较两个表达式的值是否相等。 !== 运算符 比较两个表达式的值,看其值是否相等或据类型是否一致。 0...n 属性 返回单个参的实际值,该参来自由当前运行函的参属性返回的参对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录。 % 运算符 两个表达式的值相除,返回余。 %= 运算符 用变量的值除以表达式的值,余赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 将两个表达式的值相乘。 *= 运算符 将变量与表达式的值相乘,结果赋给变量。 + 运算符 将两个字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对单个表达式取反。 -- 运算符 变量值减 1。 -= 运算符 变量值减去表达式的值,结果赋给变量。 / 运算符 两个表达式的值相除。 /*..*/ (多行注释语句) 使 JScript 语法分析器忽略多行注释。 // (单行注释语句) 使 JScript 语法分析器忽略单行注释。 /= 运算符 变量值除以表达式的值,结果赋给变量。 < 运算符 比较一个表达式的值是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一个表达式。 >= 运算符 比较一个表达式的值是否大于等于另一个表达式。 >> 运算符 将表达式向左移位,符号位不变。 >>= 运算符 将变量的值右移由表达式指定的位符号位不变,结果赋给变量。 >>> 运算符 将表达式向左移位,包括符号位。 >>>= 运算符 将变量的值右移由表达式指定的位,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 @cc_on 语句 激活条件编译支持。 @if 语句 根据表达式的值,有条件地执行一组语句。 @set 语句 创建用于条件编译语句的变量。 abs 方法 返回一个的绝对值。 acos 方法 返回一个的反余弦。 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 加法运算符 (+) 将两个字表达式的值相加,或连接两个字符串。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函的每个参组。 Array 对象 提供对创建任何据类型的组的支持。 asin 方法 返回一个的反正弦。 赋值运算符 (=) 将一个值赋给变量。 atan 方法 返回一个的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个指示枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式执行按位异或操作。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 Boolean 对象 创建一个新的 Boolean 值。 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 callee 属性 返回正执行的函对象,它是指定的函对象的文本正文。 caller 属性 返回调用当前函的函引用。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 ceil 方法 返回大于或等于其值参的最小整。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 逗号运算符 (,) 使两个表达式连续执行。 /*..*/ (多行注释语句) 使多行注释部分被 JScript 语法分析器忽略。 注释语句 - 单行(//) 使 JScript 语法分析器忽略单行注释。 比较运算符 返回一个显示比较结果的 Boolean 值。 compile 方法 将一个正则表达式编译为内部格式。 复合赋值运算符 复合赋值运算符列表。 concat 方法 (Array) 返回一个由两个组合并组成的新组。 concat 方法 (String) 返回一个包含给定的两个字符串连接的String 对象。 条件(三元)运算符 (?:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 cos 方法 返回一个的余弦。 Date 对象 提供日期和时间的基本存储和检索。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 组件的解码版。 递减运算符(--) 将变量减一。 delete 运算符 删除对象的属性,或删除组中的一个元素。 description 属性 返回或设置关于指定错误的描述字符串。 Dictionary 对象 存储据键、项目对的对象。 dimensions 方法 返回 VBArray 的维。 除法运算符 (/) 对两个表达式执行除法运算。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 E 属性 返回 Euler 常,即自然对的底。 encodeURI 方法 将文本字符串编码为合法的通用资源标识符 (URI)。 encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时发生错误信息的对象。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对的底) 的幂。 FileSystemObject 对象 提供对计算机文件系统的访问。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其值参的最大整。 fontcolor 方法 将 HTML 带 COLOR 属性的 <FONT> 标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的 <FONT> 标识添加到 String 对象中的文本两端。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句t 对应于对象或组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函。 function 语句 声明一个新的函。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 GetObject 函 返回文件中的 Automation 对象的引用。 getSeconds 方法 使用当地时间返回 Date 对象的秒。 getTime 方法 返回 Date 对象中的时间值。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几的值。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间 (UTC) 返回 Date 对象的秒。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 Global 对象 是一个固有对象,目的是将全局方法集中在一个对象中。 global 属性 返回一个 Boolean 值,标记正则表达式使用的 global 标志状态 (g)。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符(>=) 比较两个表达式,看一个是否大于等于另一个。 hasOwnProperty 方法 返回一个 Boolean 值,标记对象是否带有指定名称的属性。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的据类型。 if...else 语句 根据表达式的值,有条件地执行一组语句。 ignoreCase 属性 返回一个 Boolean 值,标记正则表达式使用的 ignoreCase 标志状态 (i)。 递增运算符(++) 给变量加一。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 isFinite 方法 返回一个 Boolean 值,表明某个给定的是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN(不是一个)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个组中的所有元素连接在一起的 String 对象。 Labeled 语句 给语句提供一个标识符。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 lbound 方法 返回在 VBArray 中指定维所用的最小索引值。 leftContext 属性 ($`) 返回由调用者传递给函的实际参。 length 属性 (Arguments) 返回由调用者传递给函的实际参。 length 属性 (Array) 返回比组中所定义的最高元素大 1 的整值 。 length 属性 (Function) 返回为函所定义的参。 length 属性 (String) 返回 String 对象的长度。 小于运算符 (<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 LN2 属性 返回 2 的自然对。 LN10 属性 返回 10 的自然对。 localeCompare 方法 返回值表明在当前区域设置下,两个字符串是否相等。 log 方法 返回某个的自然对。 LOG2E 属性 返回以 2 为底的 e(即 Euler 常)的对。 LOG10E 属性 返回以 10 为底的e(即 Euler 常)的对。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符(!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为组返回。 Math 对象 一个固有对象,提供基本的学函和常。 max 方法 返回给定的两个表达式中的较大者。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 min 方法 返回给定的两个中的较小者。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 取模运算符 (%) 对两个表达式执行除法运算,返回余。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 multiline 属性 返回 Boolean 值,表明正则表达式使用的 multiline 标志 (m)。 乘法运算符 (*) 对两个表达式执行减法操作。 name 属性 返回错误名称。 NaN 属性 (Global) 返回特殊值 NaN,表示某个表达式不是一个。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (Number.MAX_VALUE)更小的值。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或据类型不同。 Number 对象 表示据类型和提供值常的对象。 number 属性 返回或设置与特定错误关联的值。 Object 对象 提供所有的 JScript 对象的公共功能。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒。 parseFloat 方法 返回从字符串转换而来的浮点。 parseInt 方法 返回从字符串转换而来的整。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 pop 方法 将组中的最后一个元素删除,并返回其值。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的 (-Number.MAX_VALUE)更大的值。 pow 方法 返回一个指定幂次的底表达式的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 push 方法 向组中添加新的元素,返回新的组长度。 random 方法 返回一个 0 和 1 之间的伪随机。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 正则表达式语法 在写正则表达式模式时可以使用的特殊字符和序列的列表。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 return 语句 从当前函退出并从该函返回一个值。 reverse 方法 返回一个元素反序的 Array 对象。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 round 方法 将一个指定的值表达式舍入到最近的整值。 运行时错误 JScript运行时错误列表 ScriptEngine 函 返回一个代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函 返回所使用的脚本引擎的次版本号。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date对象的值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除组中的第一个元素并返回该值。 sin 方法 返回一个的正弦。 slice 方法 (Array) 返回组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 source 属性 返回正则表达式模式的文本的复制。 splice 方法 从组中删除一个元素,必要时在该位置插入一个新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串组返回。 sqrt 方法 返回一个的平方根。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到 String 对象中的文本两端。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串并确定其位置。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 一元取相反运算符(-) 从一个表达式的值中减去另一个表达式的值。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 Syntax 错误 JScript 语法错误列表。 tan 方法 返回一个的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 组。 toDateString 方法 以字符串形式返回日期值。 toExponential 方法 返回一个用指形式表示的字符串。 toFixed 方法 返回一个字符串,表示一个用不动点记法表示的字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的日期。 toLocaleDateString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的日期。 toLocaleLowercase 方法 返回字符串,其中的所有字符都被转换成小写(考虑主机环境的当前设置)。 toLocaleString 方法 返回一个转换为使用当地时间的日期。 toLocaleTimeString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的时间。 toLocaleUppercase 方法 返回字符串,其中的所有字符都被转换成大写(考虑主机环境的当前设置)。 toLowerCase 方法 返回一个字符串,该字符串中所有字母被转换为小写字母。 toString 方法 返回一个对象的字符串表示。 toPrecision 方法 返回一个字符串,该字符串包含用指定位的指或 fixed-point 形式表示的字。 toTimeString 方法 返回以字符串形式表示的时间。 toUpperCase 方法 返回一个字符串,该字符串中所有字母都被转换为大写字母。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的日期。 try 语句 实现 JScript 的错误处理。 typeof 运算符 返回一个表示表达式的据类型的字符串。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 一元取负运算符 (-) 表示一个值表达式的相反。 undefined 属性 返回 undefined 的初始值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个组,在该组头部插入了指定的元素。 无符号右移运算符 (>>>) 将表达式向右移位,包括符号位。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC)(或 GMT)与指定日期之间的毫秒。 valueOf 方法 返回指定对象的原始值。 var 语句 声明一个变量。 VBArray 对象 提供对 Visual Basic 安全组的访问。 void 运算符 避免一个表达式返回值。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 GetObject 函 返回文件中的 Automation 对象的引用。 ScriptEngine 函 返回代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函 返回所使用的脚本引擎的次版本号。 语言元素 描述 abs 方法 返回一个的绝对值。 acos 方法 返回一个的反余弦。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 asin 方法 返回一个的反正弦。 atan 方法 返回一个的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个表明枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 ceil 方法 返回大于或等于其值参的最小整。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 compile 方法 将一个正则表达式编译为内部格式。 concat 方法(Array) 返回一个由两个组合并组成的新组。 concat 方法(String) 返回一个包含给定的两个字符串的连接的 String 对象。 cos 方法 返回一个的余弦。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 dimensions 方法 返回 VBArray 的维。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行之。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对的底) 的幂。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其值参的最大整。 fontcolor 方法 将 HTML 带 COLOR 属性的<FONT>标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的<FONT>标识添加到 String 对象中的文本两端。 fromCharCode 方法 返回 Unicode 字符值的字符串。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回位于指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 getSeconds 方法 使用当地时间返回 Date 对象的秒。 getTime 方法 返回 Date 对象中的时间。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间(UTC)返回Date对象的秒。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 hasOwnProperty 方法 返回一个 Boolean 值,表明对象是否具有指定的名称。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 isFinite 方法 返回一个 Boolean 值,表明某个给定的是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN (不是一个)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在于另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个组中的所有元素连接在一起的 String 对象。 lastIndexOf 方法 返回在 String 对象中子字符串最后出现的位置。 lbound 方法 返回在 VBArray 中指定维所用的最小索引值。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 localeCompare 方法 返回一个值,表明两个字符串在当前区域设置下是否相等。 log 方法 返回某个的自然对。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为组返回。 max 方法 返回给定的两个表达式中的较大者。 min 方法 返回给定的两个中的较小者。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒。 parseFloat 方法 返回从字符串转换而来的浮点。 parseInt 方法 返回从字符串转换而来的整。 pop 方法 删除组中的最后一个元素并返回该值。 pow 方法 返回一个指定幂次的底表达式的值。 push 方法 向组中添加新元素,返回组的新长度。 random 方法 返回一个 0 和 1 之间的伪随机。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 reverse 方法 返回一个元素反序的 Array 对象。 round 方法 将一个指定的值表达式舍入到最近的整并将其返回。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date 对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date 对象的值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除组中的第一个元素并返回该值。 sin 方法 返回一个的正弦。 slice 方法 (Array) 返回组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 splice 方法 从组中删除元素,若必要,在相应位置处插入新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串组返回。 sqrt 方法 返回一个的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到String 对象中的文本两端。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 tan 方法 返回一个的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 组。 toDateString 方法 返回以字符串形式表示的日期。 toExponential 方法 返回一个字符串,该字符串包含一个以指形式表示的字。 toFixed 方法 返回一个字符串,表明一个用 fixed-point 形式表示的字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的字符串的日期。 toLocaleDateString 方法 返回一个以字符串形式表示的日期,该日期与主机环境的当前区域设置相适应。 toLocaleLowercase 方法 返回一个字符串,其中所有的字母字符都被转换成小写(考虑主机环境的当前区域设置)。 toLocaleTimeString 方法 返回一个以字符串形式表示的时间,该时间与主机环境当前区域设置相适应。 toLocaleString 方法 返回一个转换为使用当地时间的字符串的日期。 toLocaleUppercase 方法 返回一个字符串,其中所有的字母字符都被转换成大写(考虑主机环境的当前区域设置)。 toLowerCase 方法 返回一个所有的字母字符都被转换为小写字母的字符串。 toPrecision 方法 返回一个字符串,该字符串包含用指定位的指或 fixed-point 形式表示的字。 toString 方法 返回一个对象的字符串表示。 toTimeString 方法 返回一个以字符串形式表示的时间。 toUpperCase 方法 返回一个所有的字母字符都被转换为大写字母的字符串。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的字符串的日期。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个组,在该组头部插入了指定的元素。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC) (或 GMT)与指定日期之间的毫秒. valueOf 方法 返回指定对象的原始值。 语言元素 描述 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 Array 对象 提供对创建任何据类型的组的支持。 Boolean 对象 创建一个新的 Boolean 值。 Date 对象 提供日期和时间的基本存储和检索。 Dictionary 对象 存储据键、项对的对象。 Enumerator 对象 提供集合中的项的枚举。 Error 对象 包含在运行 JScript 代码时发生的错误的有关信息。 FileSystemObject 对象 提供对计算机文件系统的访问。 Function 对象 创建一个新的函。 Global 对象 是一个内部对象,目的是将全局方法集中在一个对象中。 Math 对象 一个内部对象,提供基本的学函和常。 Number 对象 表示据类型和提供值常的对象。 Object 对象 提供所有的 JScript 对象的公共功能。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串及确定其位置。 VBArray 对象 提供对 Visual Basic 安全组的访问。 语言元素 描述 ! 运算符 对表达式执行逻辑“非”运算。 != 运算符 比较两个表达式的值,看其是否相等。 !== 运算符 比较两个表达式的值,看其是否不相等或据类型不一致。 % 运算符 对两个表达式执行除法运算,返回余。 %= 运算符 对变量和表达式执行除法运算,余赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 对两个表达式执行乘法运算。 *= 运算符 对变量和表达式执行乘法运算,结果赋给变量。 + 运算符 对两个值表达式求和,或连接两个字符串。 ++ 运算符 变量值加一。 += 运算符 将变量和表达式的值相加,结果赋给变量。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式的值减去另一个表达式的值或对一个表达式执行取负运算。 -- 运算符 变量值减一。 -= 运算符 从变量值中减表达式的值,结果赋给变量。 / 运算符 对两个表达式执行除法运算。 /= 运算符 对变量和表达式执行除法运算,结果赋给变量。 < 运算符 比较一个表达式是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式的值。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一表达式。 >= 运算符 比较一个表达式的值是否大于等于另一表达式。 >> 运算符 表达式向右移位,符号位不变。 >>= 运算符 将变量的值左移由表达式指定的位符号位不变,结果赋给变量。 >>> 运算符 表达式向右移位,包括符号位。 >>>= 运算符 将变量的值左移由表达式指定的位,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行按位异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 加法运算符 (+) 求两个值表达式的和,或连接两个字符串。 赋值运算符 (=) 将一个值赋给变量。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 (~) 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符 (^) 对两个表达式执行按位异或操作。 逗号运算符 (,) 使两个表达式连续执行。 比较运算符 返回 Boolean 值,表示比较结果。 复合赋值运算符 复合赋值运算符列表。 条件(三元)运算符(?:) 根据条件执行两个表达式之一。 递减运算符 (--) 将变量减一。 delete 运算符 删除对象的属性,或删除组中的一个元素。. 除法运算符(/) 对两个表达式执行除法运算。 相等运算符(==) 比较两个表达式,看是否相等。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符 (>=) 比较两个表达式,看一个是否大于等于另一个。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的据类型。 递增运算符(++) 给变量加一。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 小于运算符(<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符 (!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 取模运算符。 (%) 对两个表达式执行除法运算,返回余。 乘法运算符 (*) 对两个表达式执行减法操作。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或据类型不同。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 减法运算符 (-) 求两个表达式值的差。 typeof 运算符 返回一个表示表达式的据类型的字符串。 一元取相反运算符(-) 表示一个值表达式的相反无符号右移运算符 (>>>) 表达式向右移位,包括符号位。 void 运算符 避免一个表达式返回值。 语言元素 描述 0...n 属性 返回单个参的实际值,该参来自由当前运行函的参属性返回的参对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录 arguments 属性 返回一个包含传递给当前执行函的每个参组。 caller 属性 返回调用当前函的函引用。 callee 属性 返回正执行的函对象,它是指定的函对象的文本正文。 constructor 属性 指定创建对象的函。 description 属性 返回或设置关于指定错误的描述字符串。 E 属性 返回 Euler 常,即自然对的底。 global 属性 返回一个 Boolean 值,表明正则表达式使用的 global 标志 (g) 状态。 ignoreCase 属性 返回一个 Boolean 值,表明正则表达式使用的 ignoreCase 标志 (i) 状态。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastMatch 属性 ($) 返回任意正则表达式搜索中最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 leftContext 属性 ($`) 返回由调用者传递给函的实际参。 length 属性 (Arguments) 返回由调用者传递给函的实际参。 length 属性 (Array) 返回比组中所定义的最高元素大 1 的一个。 length 属性 (Function) 返回为函所定义的参。 length 属性 (String) 返回 String 对象的长度。 LN2 属性 返回 2 的自然对。 LN10 属性 返回 10 的自然对。 LOG2E 属性 返回以 2 为底的 e(即 Euler常)的对。 LOG10E 属性 返回以 10 为底的e(即 Euler常)的对。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 返回错误消息串。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 multiline 属性 返回一个 Boolean 值,表明正则表达式使用的 multiline 标志 (m) 状态。 name 属性 返回错误名称。 NaN 属性(Global) 返回特殊值 NaN,表示某个表达式不是一个。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (-Number.MAX_VALUE)更负的值。 number 属性 返回或设置与特定错误关联的值。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的 (Number.MAX_VALUE)更大的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 source 属性 返回正则表达式模式的文本的拷贝。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 undefined 属性 返回 undefined 的初始值。 语言元素 描述 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 @cc_on 语句 激活条件编译支持。 //(单行注释语句) 使单行注释被 JScript 语法分析器忽略。 /*..*/(多行注释语句) 使多行注释被 JScript 语法分析器忽略。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句 对应于对象或组中的每个元素执行一个或多个语句。 function 语句 声明一个新的函。 @if 语句 根据表达式的值,有条件地执行一组语句。 if...else 语句 根据表达式的值,有条件地执行一组语句。 Labeled 语句 给语句提供一个标识符。 return 语句 从当前函退出并从该函返回一个值。 @set 语句 创建用于条件编译语句的变量。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 try 语句 实现 JScript 的错误处理。 var 语句 声明一个变量。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 运行时错误 JScript运行时错误列表 语法错误 JScript语法错误列表
学习JAVA的好帮手,希望有所帮助。欢迎使用 JScript 语言参考 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目列表。再从该列表中选择要查看的主题。在打开所选主题后,就可以方便地链接到相关章节。 请尽情浏览 JScript 语言参考的各个部分,你会发现 JScript 语言有多么丰富。 特性 描述 JScript 特性(非-ECMA) JScript 目前的 ECMA 特性列表。 JScript 的特性 (ECMA) JScript 目前的非-ECMA 特性列表。 Microsoft Scripting 运行时特性 JScript 目前的 scripting 运行时特性列表。 语言元素 描述 ! 运算符 对表达式进行逻辑非运算。 != 运算符 比较两个表达式的值是否相等。 !== 运算符 比较两个表达式的值,看其值是否相等或据类型是否一致。 0...n 属性 返回单个参的实际值,该参来自由当前运行函的参属性返回的参对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录。 % 运算符 两个表达式的值相除,返回余。 %= 运算符 用变量的值除以表达式的值,余赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 将两个表达式的值相乘。 *= 运算符 将变量与表达式的值相乘,结果赋给变量。 + 运算符 将两个字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对单个表达式取反。 -- 运算符 变量值减 1。 -= 运算符 变量值减去表达式的值,结果赋给变量。 / 运算符 两个表达式的值相除。 /*..*/ (多行注释语句) 使 JScript 语法分析器忽略多行注释。 // (单行注释语句) 使 JScript 语法分析器忽略单行注释。 /= 运算符 变量值除以表达式的值,结果赋给变量。 < 运算符 比较一个表达式的值是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一个表达式。 >= 运算符 比较一个表达式的值是否大于等于另一个表达式。 >> 运算符 将表达式向左移位,符号位不变。 >>= 运算符 将变量的值右移由表达式指定的位符号位不变,结果赋给变量。 >>> 运算符 将表达式向左移位,包括符号位。 >>>= 运算符 将变量的值右移由表达式指定的位,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 @cc_on 语句 激活条件编译支持。 @if 语句 根据表达式的值,有条件地执行一组语句。 @set 语句 创建用于条件编译语句的变量。 abs 方法 返回一个的绝对值。 acos 方法 返回一个的反余弦。 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 加法运算符 (+) 将两个字表达式的值相加,或连接两个字符串。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函的每个参组。 Array 对象 提供对创建任何据类型的组的支持。 asin 方法 返回一个的反正弦。 赋值运算符 (=) 将一个值赋给变量。 atan 方法 返回一个的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个指示枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式执行按位异或操作。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 Boolean 对象 创建一个新的 Boolean 值。 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 callee 属性 返回正执行的函对象,它是指定的函对象的文本正文。 caller 属性 返回调用当前函的函引用。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 ceil 方法 返回大于或等于其值参的最小整。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 逗号运算符 (,) 使两个表达式连续执行。 /*..*/ (多行注释语句) 使多行注释部分被 JScript 语法分析器忽略。 注释语句 - 单行(//) 使 JScript 语法分析器忽略单行注释。 比较运算符 返回一个显示比较结果的 Boolean 值。 compile 方法 将一个正则表达式编译为内部格式。 复合赋值运算符 复合赋值运算符列表。 concat 方法 (Array) 返回一个由两个组合并组成的新组。 concat 方法 (String) 返回一个包含给定的两个字符串连接的String 对象。 条件(三元)运算符 (?:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 cos 方法 返回一个的余弦。 Date 对象 提供日期和时间的基本存储和检索。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 组件的解码版。 递减运算符(--) 将变量减一。 delete 运算符 删除对象的属性,或删除组中的一个元素。 description 属性 返回或设置关于指定错误的描述字符串。 Dictionary 对象 存储据键、项目对的对象。 dimensions 方法 返回 VBArray 的维。 除法运算符 (/) 对两个表达式执行除法运算。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 E 属性 返回 Euler 常,即自然对的底。 encodeURI 方法 将文本字符串编码为合法的通用资源标识符 (URI)。 encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时发生错误信息的对象。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对的底) 的幂。 FileSystemObject 对象 提供对计算机文件系统的访问。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其值参的最大整。 fontcolor 方法 将 HTML 带 COLOR 属性的 <FONT> 标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的 <FONT> 标识添加到 String 对象中的文本两端。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句t 对应于对象或组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函。 function 语句 声明一个新的函。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 GetObject 函 返回文件中的 Automation 对象的引用。 getSeconds 方法 使用当地时间返回 Date 对象的秒。 getTime 方法 返回 Date 对象中的时间值。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几的值。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间 (UTC) 返回 Date 对象的秒。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 Global 对象 是一个固有对象,目的是将全局方法集中在一个对象中。 global 属性 返回一个 Boolean 值,标记正则表达式使用的 global 标志状态 (g)。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符(>=) 比较两个表达式,看一个是否大于等于另一个。 hasOwnProperty 方法 返回一个 Boolean 值,标记对象是否带有指定名称的属性。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的据类型。 if...else 语句 根据表达式的值,有条件地执行一组语句。 ignoreCase 属性 返回一个 Boolean 值,标记正则表达式使用的 ignoreCase 标志状态 (i)。 递增运算符(++) 给变量加一。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 isFinite 方法 返回一个 Boolean 值,表明某个给定的是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN(不是一个)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个组中的所有元素连接在一起的 String 对象。 Labeled 语句 给语句提供一个标识符。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 lbound 方法 返回在 VBArray 中指定维所用的最小索引值。 leftContext 属性 ($`) 返回由调用者传递给函的实际参。 length 属性 (Arguments) 返回由调用者传递给函的实际参。 length 属性 (Array) 返回比组中所定义的最高元素大 1 的整值 。 length 属性 (Function) 返回为函所定义的参。 length 属性 (String) 返回 String 对象的长度。 小于运算符 (<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 LN2 属性 返回 2 的自然对。 LN10 属性 返回 10 的自然对。 localeCompare 方法 返回值表明在当前区域设置下,两个字符串是否相等。 log 方法 返回某个的自然对。 LOG2E 属性 返回以 2 为底的 e(即 Euler 常)的对。 LOG10E 属性 返回以 10 为底的e(即 Euler 常)的对。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符(!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为组返回。 Math 对象 一个固有对象,提供基本的学函和常。 max 方法 返回给定的两个表达式中的较大者。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 min 方法 返回给定的两个中的较小者。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 取模运算符 (%) 对两个表达式执行除法运算,返回余。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 multiline 属性 返回 Boolean 值,表明正则表达式使用的 multiline 标志 (m)。 乘法运算符 (*) 对两个表达式执行减法操作。 name 属性 返回错误名称。 NaN 属性 (Global) 返回特殊值 NaN,表示某个表达式不是一个。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (Number.MAX_VALUE)更小的值。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或据类型不同。 Number 对象 表示据类型和提供值常的对象。 number 属性 返回或设置与特定错误关联的值。 Object 对象 提供所有的 JScript 对象的公共功能。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒。 parseFloat 方法 返回从字符串转换而来的浮点。 parseInt 方法 返回从字符串转换而来的整。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 pop 方法 将组中的最后一个元素删除,并返回其值。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的 (-Number.MAX_VALUE)更大的值。 pow 方法 返回一个指定幂次的底表达式的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 push 方法 向组中添加新的元素,返回新的组长度。 random 方法 返回一个 0 和 1 之间的伪随机。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 正则表达式语法 在写正则表达式模式时可以使用的特殊字符和序列的列表。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 return 语句 从当前函退出并从该函返回一个值。 reverse 方法 返回一个元素反序的 Array 对象。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 round 方法 将一个指定的值表达式舍入到最近的整值。 运行时错误 JScript运行时错误列表 ScriptEngine 函 返回一个代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函 返回所使用的脚本引擎的次版本号。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date对象的值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除组中的第一个元素并返回该值。 sin 方法 返回一个的正弦。 slice 方法 (Array) 返回组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 source 属性 返回正则表达式模式的文本的复制。 splice 方法 从组中删除一个元素,必要时在该位置插入一个新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串组返回。 sqrt 方法 返回一个的平方根。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到 String 对象中的文本两端。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串并确定其位置。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 一元取相反运算符(-) 从一个表达式的值中减去另一个表达式的值。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 Syntax 错误 JScript 语法错误列表。 tan 方法 返回一个的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 组。 toDateString 方法 以字符串形式返回日期值。 toExponential 方法 返回一个用指形式表示的字符串。 toFixed 方法 返回一个字符串,表示一个用不动点记法表示的字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的日期。 toLocaleDateString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的日期。 toLocaleLowercase 方法 返回字符串,其中的所有字符都被转换成小写(考虑主机环境的当前设置)。 toLocaleString 方法 返回一个转换为使用当地时间的日期。 toLocaleTimeString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的时间。 toLocaleUppercase 方法 返回字符串,其中的所有字符都被转换成大写(考虑主机环境的当前设置)。 toLowerCase 方法 返回一个字符串,该字符串中所有字母被转换为小写字母。 toString 方法 返回一个对象的字符串表示。 toPrecision 方法 返回一个字符串,该字符串包含用指定位的指或 fixed-point 形式表示的字。 toTimeString 方法 返回以字符串形式表示的时间。 toUpperCase 方法 返回一个字符串,该字符串中所有字母都被转换为大写字母。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的日期。 try 语句 实现 JScript 的错误处理。 typeof 运算符 返回一个表示表达式的据类型的字符串。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 一元取负运算符 (-) 表示一个值表达式的相反。 undefined 属性 返回 undefined 的初始值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个组,在该组头部插入了指定的元素。 无符号右移运算符 (>>>) 将表达式向右移位,包括符号位。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC)(或 GMT)与指定日期之间的毫秒。 valueOf 方法 返回指定对象的原始值。 var 语句 声明一个变量。 VBArray 对象 提供对 Visual Basic 安全组的访问。 void 运算符 避免一个表达式返回值。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 GetObject 函 返回文件中的 Automation 对象的引用。 ScriptEngine 函 返回代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函 返回所使用的脚本引擎的次版本号。 语言元素 描述 abs 方法 返回一个的绝对值。 acos 方法 返回一个的反余弦。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 asin 方法 返回一个的反正弦。 atan 方法 返回一个的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个表明枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 ceil 方法 返回大于或等于其值参的最小整。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 compile 方法 将一个正则表达式编译为内部格式。 concat 方法(Array) 返回一个由两个组合并组成的新组。 concat 方法(String) 返回一个包含给定的两个字符串的连接的 String 对象。 cos 方法 返回一个的余弦。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 dimensions 方法 返回 VBArray 的维。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行之。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对的底) 的幂。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其值参的最大整。 fontcolor 方法 将 HTML 带 COLOR 属性的<FONT>标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的<FONT>标识添加到 String 对象中的文本两端。 fromCharCode 方法 返回 Unicode 字符值的字符串。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回位于指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 getSeconds 方法 使用当地时间返回 Date 对象的秒。 getTime 方法 返回 Date 对象中的时间。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间(UTC)返回Date对象的秒。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 hasOwnProperty 方法 返回一个 Boolean 值,表明对象是否具有指定的名称。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 isFinite 方法 返回一个 Boolean 值,表明某个给定的是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN (不是一个)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在于另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个组中的所有元素连接在一起的 String 对象。 lastIndexOf 方法 返回在 String 对象中子字符串最后出现的位置。 lbound 方法 返回在 VBArray 中指定维所用的最小索引值。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 localeCompare 方法 返回一个值,表明两个字符串在当前区域设置下是否相等。 log 方法 返回某个的自然对。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为组返回。 max 方法 返回给定的两个表达式中的较大者。 min 方法 返回给定的两个中的较小者。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒。 parseFloat 方法 返回从字符串转换而来的浮点。 parseInt 方法 返回从字符串转换而来的整。 pop 方法 删除组中的最后一个元素并返回该值。 pow 方法 返回一个指定幂次的底表达式的值。 push 方法 向组中添加新元素,返回组的新长度。 random 方法 返回一个 0 和 1 之间的伪随机。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 reverse 方法 返回一个元素反序的 Array 对象。 round 方法 将一个指定的值表达式舍入到最近的整并将其返回。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date 对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date 对象的值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除组中的第一个元素并返回该值。 sin 方法 返回一个的正弦。 slice 方法 (Array) 返回组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 splice 方法 从组中删除元素,若必要,在相应位置处插入新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串组返回。 sqrt 方法 返回一个的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到String 对象中的文本两端。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 tan 方法 返回一个的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 组。 toDateString 方法 返回以字符串形式表示的日期。 toExponential 方法 返回一个字符串,该字符串包含一个以指形式表示的字。 toFixed 方法 返回一个字符串,表明一个用 fixed-point 形式表示的字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的字符串的日期。 toLocaleDateString 方法 返回一个以字符串形式表示的日期,该日期与主机环境的当前区域设置相适应。 toLocaleLowercase 方法 返回一个字符串,其中所有的字母字符都被转换成小写(考虑主机环境的当前区域设置)。 toLocaleTimeString 方法 返回一个以字符串形式表示的时间,该时间与主机环境当前区域设置相适应。 toLocaleString 方法 返回一个转换为使用当地时间的字符串的日期。 toLocaleUppercase 方法 返回一个字符串,其中所有的字母字符都被转换成大写(考虑主机环境的当前区域设置)。 toLowerCase 方法 返回一个所有的字母字符都被转换为小写字母的字符串。 toPrecision 方法 返回一个字符串,该字符串包含用指定位的指或 fixed-point 形式表示的字。 toString 方法 返回一个对象的字符串表示。 toTimeString 方法 返回一个以字符串形式表示的时间。 toUpperCase 方法 返回一个所有的字母字符都被转换为大写字母的字符串。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的字符串的日期。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个组,在该组头部插入了指定的元素。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC) (或 GMT)与指定日期之间的毫秒. valueOf 方法 返回指定对象的原始值。 语言元素 描述 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 Array 对象 提供对创建任何据类型的组的支持。 Boolean 对象 创建一个新的 Boolean 值。 Date 对象 提供日期和时间的基本存储和检索。 Dictionary 对象 存储据键、项对的对象。 Enumerator 对象 提供集合中的项的枚举。 Error 对象 包含在运行 JScript 代码时发生的错误的有关信息。 FileSystemObject 对象 提供对计算机文件系统的访问。 Function 对象 创建一个新的函。 Global 对象 是一个内部对象,目的是将全局方法集中在一个对象中。 Math 对象 一个内部对象,提供基本的学函和常。 Number 对象 表示据类型和提供值常的对象。 Object 对象 提供所有的 JScript 对象的公共功能。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串及确定其位置。 VBArray 对象 提供对 Visual Basic 安全组的访问。 语言元素 描述 ! 运算符 对表达式执行逻辑“非”运算。 != 运算符 比较两个表达式的值,看其是否相等。 !== 运算符 比较两个表达式的值,看其是否不相等或据类型不一致。 % 运算符 对两个表达式执行除法运算,返回余。 %= 运算符 对变量和表达式执行除法运算,余赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 对两个表达式执行乘法运算。 *= 运算符 对变量和表达式执行乘法运算,结果赋给变量。 + 运算符 对两个值表达式求和,或连接两个字符串。 ++ 运算符 变量值加一。 += 运算符 将变量和表达式的值相加,结果赋给变量。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式的值减去另一个表达式的值或对一个表达式执行取负运算。 -- 运算符 变量值减一。 -= 运算符 从变量值中减表达式的值,结果赋给变量。 / 运算符 对两个表达式执行除法运算。 /= 运算符 对变量和表达式执行除法运算,结果赋给变量。 < 运算符 比较一个表达式是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式的值。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一表达式。 >= 运算符 比较一个表达式的值是否大于等于另一表达式。 >> 运算符 表达式向右移位,符号位不变。 >>= 运算符 将变量的值左移由表达式指定的位符号位不变,结果赋给变量。 >>> 运算符 表达式向右移位,包括符号位。 >>>= 运算符 将变量的值左移由表达式指定的位,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行按位异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 加法运算符 (+) 求两个值表达式的和,或连接两个字符串。 赋值运算符 (=) 将一个值赋给变量。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 (~) 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符 (^) 对两个表达式执行按位异或操作。 逗号运算符 (,) 使两个表达式连续执行。 比较运算符 返回 Boolean 值,表示比较结果。 复合赋值运算符 复合赋值运算符列表。 条件(三元)运算符(?:) 根据条件执行两个表达式之一。 递减运算符 (--) 将变量减一。 delete 运算符 删除对象的属性,或删除组中的一个元素。. 除法运算符(/) 对两个表达式执行除法运算。 相等运算符(==) 比较两个表达式,看是否相等。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符 (>=) 比较两个表达式,看一个是否大于等于另一个。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的据类型。 递增运算符(++) 给变量加一。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 小于运算符(<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符 (!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 取模运算符。 (%) 对两个表达式执行除法运算,返回余。 乘法运算符 (*) 对两个表达式执行减法操作。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或据类型不同。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 减法运算符 (-) 求两个表达式值的差。 typeof 运算符 返回一个表示表达式的据类型的字符串。 一元取相反运算符(-) 表示一个值表达式的相反无符号右移运算符 (>>>) 表达式向右移位,包括符号位。 void 运算符 避免一个表达式返回值。 语言元素 描述 0...n 属性 返回单个参的实际值,该参来自由当前运行函的参属性返回的参对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录 arguments 属性 返回一个包含传递给当前执行函的每个参组。 caller 属性 返回调用当前函的函引用。 callee 属性 返回正执行的函对象,它是指定的函对象的文本正文。 constructor 属性 指定创建对象的函。 description 属性 返回或设置关于指定错误的描述字符串。 E 属性 返回 Euler 常,即自然对的底。 global 属性 返回一个 Boolean 值,表明正则表达式使用的 global 标志 (g) 状态。 ignoreCase 属性 返回一个 Boolean 值,表明正则表达式使用的 ignoreCase 标志 (i) 状态。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastMatch 属性 ($) 返回任意正则表达式搜索中最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 leftContext 属性 ($`) 返回由调用者传递给函的实际参。 length 属性 (Arguments) 返回由调用者传递给函的实际参。 length 属性 (Array) 返回比组中所定义的最高元素大 1 的一个。 length 属性 (Function) 返回为函所定义的参。 length 属性 (String) 返回 String 对象的长度。 LN2 属性 返回 2 的自然对。 LN10 属性 返回 10 的自然对。 LOG2E 属性 返回以 2 为底的 e(即 Euler常)的对。 LOG10E 属性 返回以 10 为底的e(即 Euler常)的对。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 返回错误消息串。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 multiline 属性 返回一个 Boolean 值,表明正则表达式使用的 multiline 标志 (m) 状态。 name 属性 返回错误名称。 NaN 属性(Global) 返回特殊值 NaN,表示某个表达式不是一个。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (-Number.MAX_VALUE)更负的值。 number 属性 返回或设置与特定错误关联的值。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的 (Number.MAX_VALUE)更大的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 source 属性 返回正则表达式模式的文本的拷贝。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 undefined 属性 返回 undefined 的初始值。 语言元素 描述 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 @cc_on 语句 激活条件编译支持。 //(单行注释语句) 使单行注释被 JScript 语法分析器忽略。 /*..*/(多行注释语句) 使多行注释被 JScript 语法分析器忽略。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句 对应于对象或组中的每个元素执行一个或多个语句。 function 语句 声明一个新的函。 @if 语句 根据表达式的值,有条件地执行一组语句。 if...else 语句 根据表达式的值,有条件地执行一组语句。 Labeled 语句 给语句提供一个标识符。 return 语句 从当前函退出并从该函返回一个值。 @set 语句 创建用于条件编译语句的变量。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 try 语句 实现 JScript 的错误处理。 var 语句 声明一个变量。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 运行时错误 JScript运行时错误列表 语法错误 JScript语法错误列表
标题:PHP基础教程 出处:风流的CG网络日志 时间:Mon, 28 Aug 2006 07:24:34 +0000 作者:yufeng 地址:http:///read.php?38 内容: 提供给新手学习的 PHP新手教程,是一个比较有价值的PHP新手教程! 一、PHP简介 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。 1.简介 PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。 PHP代表:超文本预处理器(PHP: Hypertext Preprocessor)。PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.net)自由下载。PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么PHP也一样没有千年虫问题! 1.1 历史 三年前,Rasmus Lerdorf为了创建他的在线简历而创造了"个人主页工具"(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。 PHP虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。现在有了可以与mod_perl速度想媲美的被称作Zend的新引擎,而PHP4就可以充分利用这个引擎。PHP4还处在BETA测试阶段。Andy Gutmans和Zeev Suraki是Zend的主要作者。可以去Zend站点(http://www.zend.com)了解更多。 PHP的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。 1.2 PHP的先进之处 应用PHP有许多好处。当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到PHP4之前)。但是PHP的邮件列表很是有用而且除非你正在运行像Yahoo!或者Amazon.com这样的极受欢迎的站点,你不会感觉出PHP的速度与其他的有什么不同。最起码我就没有感觉出来!好了,让我们来看看PHP有那些优点: - 学习过程 我个人更喜欢PHP的非常简单的学习过程。与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。 PHP的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。 你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。 - 据库连接 PHP可以编译成具有与许多据库相连接的函。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函取间接存取据库。通过这样的途径当你更换使用的据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。 - 可扩展性 就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。 - 面向对象编程 PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。 - 可伸缩性 传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! 1.3 竞争对手:ASP,mod_perl,JSP 我当然不清楚ASP/JSP能做些什么。不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,因此Java程序员可以轻松开始编码。ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。 mod_perl与Perl一样强大,只是更快一些。 二、PHP入门 PHP站点的在线教程已经很棒了。在那里还有一些其他教程的链接。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的PHP编程。 2.1 首要条件 你首先必须要有一个正在工作着的支持PHP的web服务器。我假定在你的服务器上所有PHP文件的扩展名为.php3。 2.2 PHP的安装 生成一个名为test.php3的文件,含有以下内容: 然后在你的浏览器中打开此文件。看看这个页面你就知道你的PHP安装使用的选项了。 2.3 语法 就像前面提到的一样,你可以混合编写你的PHP代码和HTML代码。因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法。你可以选用其中一种你最适应的并且就这样坚持这种方法! 从HTML中分离 以下是可以使用的方法: . . . 语句 与Perl和C一样,在PHP中用(;)来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。 注释 PHP支持C,C++和Unix风格的注释方式: /* C,C++风格多行注释 */ // C++风格单行注释 # Unix风格单行注释 Hello,World! 通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: First PHP page 2.4 据类型 PHP支持整、浮点、字符串、组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。但是类型也可以被函cast或者settype()明确的设定。 值类型可以是整或是浮点。你可以用以下的语句来为一个赋值: $a = 1234; # 十进制 $a = -123; # 负数 $a = 0123; # 八进制 (等于十进制的83) $a = 0x12; # 十六进制(等于十进制的18) $a = 1.234; # 浮点"双精度" $a = 1.2e3; # 双精度的指形式 字符串 字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # 产生 Hello World $full2 = '$first $second';# 产生 $first $second 可以将字符和字利用运算符号连接起来。字符被转化成字,利用其最初位置。在PHP手册中有详细的例子。 组与哈希表 组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为赋值组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维组。 // 一个包含两个元素的组 $a[0] = "first"; $a[1] = "second"; $a[] = "third"; // 添加组元素的简单方法 // 现在$a[2]被赋值为"third" echo count($a); // 打印出3,因为该是组有3个元素 // 用一个语句定义一个组并赋值 $myphonebook = array ( "sbabu" => "5348", "keith" => "4829", "carole" => "4533" ); // 噢,忘了教长吧,让我们添加一个元素 $myphonebook["dean"] = "5397"; // 你定义的carale元素错了,让我们更正它 $myphonebook["carole"] => "4522" // 我还没有告诉你怎样使用组的相似支持方式吗?让我们看一看 echo "$myphonebook[0]"; // sbabu echo "$myphonebook[1]"; // 5348 其他一些对组或哈希表有用的函包括sort(),next(),prev()和each()。 对象 使用new语句产生一个对象: class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); 改变变量类型 在PHP手册中提到:"PHP不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。如果你为变量var赋值一个字符串,那么它变成了一个字符串。如果你又为它赋了整值,那么它就变成了整。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整(2) $foo = $foo + 1.3; // $foo是一个双精度(3.3) $foo = 5 + "10 Little Piggies"; // $foo是一个(15) $foo = 5 + "10 Small Pigs"; // $foo是一个(15) 如果想要强行转换变量类型,可以使用与C语言相同的函settype()。 2.5 变量与常量 可能你已经注意到,变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请参考PHP手册。这在有时会显得很有用。 PHP内置了许多已定义的变量。你也可以用define函定义你自己的常量,比如define("CONSTANT","value")。 2.6 运算符 PHP具有C,C++和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋值同样使用"="。 算术和字符 以下只有一种运算符是有关字符的: $a + $b :加 $a - $b :减 $a * $b :乘 $a / $b :除 $a % $b :取模(余) $a . $b :字符串连接 逻辑和比较 逻辑运算符有: $a || $b :或 $a or $b :或 $a && $b :与 $a and $b :与 $a xor $b :异或 (当$a或$b为true时为true,两者一样时为false) ! $a :非 比较运算符有: $a == $b :相等 $a != $b :不等 $a < $b :小于 $a $b :大于 $a >= $b :大于等于 与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。 优先权 就和C以及Java一样! 2.7 控制流程结构 PHP有着与C一样的流程控制。我将在下面大概介绍。 if, else, elseif, if(): endif if (表达式一) { . . . } elseif (表达式二) { . . . } else { . . . } // 或者像Python一样 if (表达式一) : . . . . . . elseif (表达式二) : . . . else : . . . endif ; Loops. while, do..while, for while (表达式) { . . . } do { . . . } while (表达式); for (表达式一; 表达式二; 表达式三) { . . . } //或者像Python一样 while (expr) : . . . endwhile ; switch switch是对多重if-elseif-else结构的最好的替换: switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i equals 2"; } break, continue break中断当前的循环控制结构。 continue被用来跳出剩下的当前循环并继续执行下一次循环。 require, include 就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。 2.8 函 你可以像以下的例子一样定义自己的函。函的返回值可以是任何据类型: function foo (变量名一, 变量名二, . . . , 变量名n) { echo "Example function.\n"; return $retval; } 所有PHP代码都可以出现在函定义中,甚至包括对其他函和类的定义。函必须在引用之前定义。 2.9 类 利用类模型建立类。可以参考PHP手册中对类的详细解释。 class Employee { var $empno; // 员工人 var $empnm; // 员工姓名 function add_employee($in_num, $in_name) { $this->empno = $in_num; $this->empnm = $in_name; } function show() { echo "$this->empno, $this->empnm"; return; } function changenm($in_name) { $this->empnm = $in_name; } } $sbabu = new Employee; $sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show(); 三、从实例入手  PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。 3.1 计划一个站点 一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个器、联系信息,甚至还有照片集和一些音乐文件等等。让我们从一个标题页面、一个联系信息页面和一个简历页面开始。我们同样需要标准的通用的页面头部和底部。 标题页面--front.html 这里我们有一个非常简单的html文件: 我的个人主页--欢迎 我的个人主页 欢迎 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 Copyright ? 我自己,1999 联系信息页面--count.html 同样我们又有了一个简单页面: 我的个人主页--联系信息 我的个人主页 联系信息 你可以通过1-800-PHP-INFO联系我 Copyright ? 我自己,1999 3.2 HTML到PHP 从上面你可以看出,每个页面有相同的头部和底部。像上面那样每个页面都写入相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在一个叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。 全站通用变量设定:common.inc <? // 全站通用变量 $MyEmail = "[email protected]"; $MyEmailLink = "$MyEmail"; $MyName = "PHP Talk"; $MySiteName = $MyName."'s Home Page"; ?> 通用页面头部:header.inc 通用页面底部:footer.inc Copyright ? by , 1999 新的页面front.php3: 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 新的cont.php3: 你可以通过1-800-PHP-INFO联系我 现在你就可以猜出这样安排的好处了。如果你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外值得注意的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。 3.3 计器 让我们在首页上加上一个器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函。counter.inc包含以下代码: 然后我们更改front.php3文件以显示这个计器: <? include("include/counter.inc"); // 我把计值放在文件counter.txt中,读出并输出 printf ("%06d \n", get_hitcount("counter.txt")); include("include/footer.inc"); ?> 看看我们的新front.php3 3.4 反馈表单 让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输入表单;一个获得表单据并处理、mail给你。 PHP中获取表单据是很简单的。当一个表单被发送后,表单中所包含的各个元素被赋上了相应的值,而这样就可以像引用一般变量一样使用了。 在process_form.php3中,变量$mytext就被赋予了输入的值--非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量值。你唯一要做的就是为表单中的每一个元素取名以便将来可以引用。 根据这个方法,我们可以生成一个简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的PHP页面(sendfdbk.php3)读取据,检查姓名是否为空,最后将据mail给你。 表单:form.php3 Your feedback on my home page. 处理表单:sendfdbk.php3 <? include("include/common.inc"); $title = "Feedback"; include("include/header.inc"); if ( $name == "" ) { // 现在我很讨厌匿名的留言! echo "Duh ? How come you are anonymous?"; } elseif ($name == "Your name") { // 这个浏览者真是不想透露姓名啊! echo "Hello ? Your name is supposed to be replaced with your actual name!"; } else { // 输出一段礼貌的感谢语 echo " Hello, $name. Thank you for your feedback. It is greatly appreciated. Thanking you $MyName $MyEmailLink "; // 最后mail出去 mail($MyEmail, "Feedback."," Name : $name E-mail : $email Comment : $comment "); } include("include/footer.inc"); ?> 3.5 简单的站内搜索引擎 PHP可以调用外部程序。在Unix环境下我们可以利用程序grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果。 <FORM ACTION="" METHOD="POST"> <INPUT TYPE="text" NAME="searchstr" value="" SIZE="20" MAXLENGTH="30"> <? if ( ! empty($searchstr) ) { // empty()用来检查查询字串是否为空 // 如果不为空,调用grep查询 echo "\n"; // 调用grep对所有文件进行大小写非敏感模式的查询 $cmdstr = "grep -i $searchstr *"; $fp = popen( $cmdstr, "r" ); // 执行命令并输出管道 $myresult = array(); // 存储查询结果 while( $buffer = fgetss ($fp, 4096)) { // grep返回这样格式: 文件名:匹配字串出现 // 因此我们利用函split()分离处理据 list($fname, $fline) = split(":",$buffer, 2); // 我们只输出第一次匹配的结果 if ( !defined($myresult[$fname])) $myresult[$fname] = $fline; } // 现在我们将结果存储在组中,下面就可以处理并输出了 if ( count($myresult) ) { echo "\n"; while(list($fname,$fline) = each($myresult)) echo " $fname : $fline \n"; echo "\n"; } else { // 如果没有查询结果 echo "Sorry. Search on $searchstr returned no results.\n"; } pclose($fp); } ?> 注释: PHP_SELF是PHP内建的变量。包含当前文件名。 fgets()按行读取文件,最多4096(指定)字符长度。 fgetss()与fgets()相似,只是解析输出的HTML标记。 split()有一个是2,因为我们只需要把输出分成两部分。另外需要省略":"。 each()是一个组操作函,用来更方便的遍历整个组。 popen()、pclose()与fopen()、fclose()的功能很相似,只是增加了管道处理。 请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的据库然后进行搜索 四、与据库链接 通过PHP你可以轻松的连接到据库,请求据并将其显示在你的web站点中,甚至修改据库中的据。MySQL是一种很流行的据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与据库的连接。我们当然不会提及Oracle据库的设计原理,原因是这已经超出了我们的讨论范围。 PHP提供了两套函与Oracle连接,分别是ORA_和OCI函。其中ORA_函略显陈旧。OCI函更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的PHP安装选项应该可以支持两者的使用。 想获得更多有关在Microsoft Windows平台上安装支持PHP3的Apache服务器的知识以及更多有关Oracle据库的知识,请查阅以下URL:www.csoft.net/~vsbabu/articles/oraphp.html。 4.1 连接 <? if ($conn=Ora_Logon("user@TNSNAME","password")) { echo "SUCCESS ! Connected to database\n"; } else { echo "Failed :-( Could not connect to database\n"; } Ora_Logoff($conn); phpinfo(); ?> 以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle据库名称、用户名称和密码连接据库。在成功连接的基础上,ora_logon函返回一个非零的连接ID并储存在变量$conn中。 4.2 查询 假设与据库已经连接就绪,下面我们就来实际的应用对据库的查询。下面的代码演示了一个连接并查询的典型例子: <? /* * 连接据库并执行查询 */ function printoraerr($in_cur) { // 检查Oracle是否出错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函 if(ora_errorcode($in_cur)) echo "Oracle code - ".ora_error($in_cur)."\n"; return; } /** 主程序 */ if (!($conn=ora_logon("user@TNSNAME","password"))) { echo "Connection to database failed\n"; exit; } echo "Connected as connection - $conn\n"; echo "Opening cursor ...\n"; $cursor=ora_open($conn); printoraerr($cursor); echo "Opened cursor - $cursor\n"; $qry="select user,sysdate from dual"; echo "Parsing the query $qry ...\n"; ora_parse($cursor,$qry,0); printoraerr($cursor); echo "Query parsed \n"; echo "Executing cursor ...\n"; ora_exec($cursor); printoraerr($cursor); echo "Executed cursor\n"; echo "Fetching cursor ...\n"; while(ora_fetch($cursor)) { $user=ora_getcolumn($cursor,0); printoraerr($cursor); $sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); echo " row = $user, $sysdate \n"; } echo "Fetched all records\n"; echo "Closing cursor ...\n"; ora_close($cursor); echo "Closed cursor\n"; echo "Logging off from oracle... \n"; ora_logoff($conn); echo "Logged off from oracle \n"; ?> (译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle据库函部分) 4.3 显示结果 以下代码演示了怎样查询据库并将结果输出: <? function printoraerr($in_cur, $conn) { // 检查Oracle是否出错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函 // If it encountered an error, we exit immediately if(ora_errorcode($in_cur)) { echo "Oracle code - ".ora_error($in_cur)."n"; ora_logoff($conn); exit; } return; } function exequery($w_qry,$conn) { $cursor=ora_open($conn); printoraerr($cursor,$conn); ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn); ora_exec($cursor); printoraerr($cursor,$conn); $numrows=0; $w_numcols=ora_numcols($cursor); // 显示头部 echo " \n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; echo "\t".ora_columnname($cursor,$i)."\n"; } echo "\n"; while(ora_fetch($cursor)) { echo "\n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; if(ora_columntype($cursor,$i)=="LONG") echo "". ora_getcolumn($cursor,$i)."\n"; else echo "".ora_getcolumn($cursor,$i)."\n"; printoraerr($cursor,$conn); } $numrows++; echo "\n"; } if ($numrows==0) echo "Query returned no records \n"; else { echo "\n"; echo "Count\n"; echo "$numrows\n"; echo "\n"; } echo "\n"; ora_close($cursor); return; } // 主程序 if(!($conn=ora_logon("user@SID","password"))) { echo "Error: Cannot connect to database\n"; exit; } $qry="SELECT deptno \"Dept\" ,empno \"Emp\" ,empnm \"Name\" ,salary \"Salary\" FROM employee ORDER BY 1,2"; exequery($qry); ora_logoff($conn); ?> (译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle据库函部分) 4.4 基于HTTP的Oracle登录 将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。 <? if(!isset($PHP_AUTH_USER)) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorized to enter the site \n"; exit; } else { if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW))) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorised to enter the site \n"; exit; } } ?> 五、其它功能 5.1 生成图像 PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。 (译者注:以上代码段缺少注释,请读者参考PHP Manual的图像处理函部分) 这段代码在其他页面中通过以下标记调用,然后以上的那段button.php3代码取得text值并在另外取得的图像文件中加上该值--在以上的代码中该图像文件是images/button1.gif--最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。 5.2 Cookies PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函setcookie()设定。与输出HTTP标头的函header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是一个简单例子: <? if (empty($VisitedBefore)) { // 如果没有设定cookie,为cookie赋上当前时间值 // 函中的最后一个声明了该cookie保存的时间 // 在这个例子中是1年 // time()函返回自1970年1月1日以来的以秒计的时间 SetCookie("VisitedBefore",time(), time()+(60*60*24*365)); } else { // 欢迎浏览者再次光临 echo "Hello there, welcome back"; // 读取cookie并判断 if ( (time() - $VisitedBefore) >= "(60*60*24*7)" ) echo "Why did you take a week to come back. You should be here more often!? "; } ?> 5.3 基于HTTP验证 基于HTTP验证当PHP以CGI模式运行时不能实现。我们可以使用函header()发送HTTP标头强制验证,客户端浏览器则弹出供输入用户名和密码的对话框。这两个变量被储存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用这两个变量验证合法并允许进入。以下的例子通过用户名称/密码对为tnc/nature的验证一名用户的登录: 事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用据库或者加密的密码文件存取它们。 5.4 文件上传 你可以利用PHP实现文件的功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上。以下就是该功能的简单演示: ( upload.html ): Upload Your File (You may notice a slight delay while we upload your file.) 下面是处理上传的文件: ( receiver.php3 ): 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } $the_time = time (); // 你需要对以下目录有写权限 $upload_dir = "/local/uploads"; $local_file = "$upload_dir/$the_time"; if ( file_exists ( '$local_file' ) ) { $seq = 1; while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; } $local_file = "$upload_dir/$the_time$seq"; }; rename ( $uploadfile, $local_file ); display_page (); } function display_page () { // 这里是你的页面内容 } php3 Receiving Script <? if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } elseif ( $cancelit ) { header ( "Location: $some_other_script" ); exit; } else { some_other_func (); } ?> 5.5 常用函 我们简单来看看一些常用的函组 array - 生成组 count - 组元素个 sort - 组排序,另有其他几种排序函可供使用 list - 列出组元素 each - 返回下一个key/value对 current - 返回当前组元素 next,prev - 传回当前组元素前后指针 日期和时间 checkdate - 验证日期/时间格式 date - 生成日期/时间格式 time - 当前时间信息 strftime - 格式化日期/时间 目录、文件系统 chdir - 改变目录 dir - 目录类别 opendir, readdir, closedir - 开启、读取、关闭目录 fopen, fclose - 开启、关闭文件 fgets, fgetss - 逐行读取内容 file - 将整个文件读入一个组变量中 正则表达式 ereg - 匹配正则表达式 eregi - 大小写非敏感匹配正则表达式 ereg_replace -匹配正则表达式并替换 eregi_replace -大小写非敏感匹配正则表达式并替换 split - 依规则切开字符串并以组形势存储 字符串 AddSlashes - 加上斜杠后使用字符串 echo - 输出一个或多个字符串 join, implode - 将组元素合并为字符串 htmlentities, htmlspecialchars - 将HTML特殊字符转换为HTML标记形式 split - 依规则切开字符串并以组形势存储 5.6 扩展我们的范例主页 我们将使用以上提到的一些函和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。 导航栏 实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码: <? /* 输出该导航栏,链接所有除当前页的站内.php3文件 */ # 读取目录 $d = dir("./"); echo " | \n"; while($entry = $d->read()) { // 忽略无文件情况 if ( !is_file($entry) ) continue; /* 将文件名与扩展名分开。由于.是正则表达式特殊字符,应该用\引出 */ list($filenm, $fileext) = split("\.",$entry, 2); // 忽略非.php3文件情况 if( $fileext != "php3" ) continue; /* 现在我们已经把.php3文件都选出,下面搜寻文件中的第一行(标题) 类似$title="something"; 并将以上标题内容分开,用作链接文字 */ $linknm = ""; $fp=fopen($entry,"r"); while($buffer=fgets($fp, 4096)) { $buffer = trim($buffer); // 我们已经把每个文件的标题放在文件的第一行以便搜索 // 但是当你改变变量名称时可能会带来大麻烦 if (ereg("title *= *\"", $buffer)) { /* 我们已经取得了标题内容并可以在此基础上 进行去除空格等处理。 必须以PHP代码方式处理,比如$title = "blah blah" */ eval($buffer); // 然后将链接文字显示为标题文字 $linknm = $title; break; } } fclose($fp); if ( $entry == basename($PHP_SELF) ) echo "$linknm"; else echo "$linknm"; echo " | "; } $d->close(); echo " \n"; ?> 照片收藏夹 我们将引用基于HTTP的验证、文件系统函和文件上传功能维护放置图像文件的目录。 同时我们需要建立一个可以列出在该目录下所有照片的页面。 文件上传 <? include("include/common.inc"); // 我们在这里再做一次用户验证 if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"$MySiteName\""); Header("HTTP/1.0 401 Unauthorized"); echo "Sorry, you are not authorized to upload files\n"; exit; } else { if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) ) { // 如果是错误的用户名称/密码对,强制再次认证 Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid."; exit; } } if ( $cancelit ) { // 当浏览者按下"取消"按钮则转向首页面 header ( "Location: front_2.php3" ); exit; } function do_upload () { global $userfile, $userfile_size, $userfile_name, $userfile_type; global $local_file, $error_msg; global $HTTP_REFERER; if ( $userfile == "none" ) { $error_msg = "You did not specify a file for uploading."; return; } if ( $userfile_size > 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } // Wherever you have write permission below... $upload_dir = "photos"; $local_file = "$upload_dir/$userfile_name"; if ( file_exists ( $local_file ) ) { $error_msg = "Sorry, a file with that name already exists"; return; }; // 你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3… rename($userfile, $local_file); echo "The file is uploaded\n"; echo "Go Back\n"; } $title = "Upload File"; include("include/header.inc"); if (empty($userfile) || $userfile=="none") { // 输出以下表单 ?> <FORM ACTION="" ENCTYPE="multipart/form-data" METHOD=POST> (You may notice a slight delay while we upload your file.) <? } else { if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } } include("include/footer.inc"); ?> 照片图库 Here are some of our family photos. This PHP script can really be made better, by splitting into multiple pages. read()) { if (is_file("photos/$entry")) echo "\n"; } $d->close(); ?> 另外,你可以在文件上传的表单中加上一个输入元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读出并显示出来。 六、网络资源 你可以通过web上的众多资源更多的了解PHP3。许多邮件列表和书籍对你都非常有用。 6.1 站点 PHP的爆炸性流行使得一夜之间出现了很多基于PHP的站点,其中不少站点有在线教程、范例代码、技巧和提示等内容。 国内 http://www.phpuser.com - PHP中文用户,也就是这里了 http://www.phpx.com - 中国PHP联盟 http://www.phpsite.net - PHP专门站 http://www.phpchina.com - PHP CHINA http://www.cpcw.com/netschool/homepage/cgi/ - 电脑报网页陶吧 国外 http://www.php.net/ - PHP官方站点 http://www.devshed.com/ - 极好的教程 http://px.sklar.com - 代码交换 http://www.phpbuilder.com/ - 教程、专栏和邮件列表档案 http://www.weberdev.com/ - 文章和代码 http://www.phpwizard.net/ - 提示与技巧 http://www.iometrics.com/php/phplist.php3/ - IOMetrics scripts的档案 http://www.e-gineer.com/phpkb/ - PHP知识库 6.2 邮件列表 你可以在PHP官方站点的"支持"栏目内登记获得以下的邮件列表。值得注意的是这些都是高流量流表,一般每天会有100份e-mail。 [email protected] - 主要的列表 [email protected] - 主要针对开发者 [email protected] - 本站的邮件列表,与论坛相通 6.3 引人注目的工程 一些基于PHP的工程已经发展得比较完善。其中一些更出色更引人注目的是: http:// phplib.netuse.de - PHPLib,一整套PHP函库 http://www.phorum.org - Phorum是一个很完善的BBS系统 http://www.fishcartsql.org - FishCartSQL是一个电子商务解决方案 http://www.midgard-project.org - Midgard是一个网络应用开发平台 Generated by Bo-blog 2.0.2 sp2
欢迎使用 JScript 语言参考 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目列表。再从该列表中选择要查看的主题。在打开所选主题后,就可以方便地链接到相关章节。 请尽情浏览 JScript 语言参考的各个部分,你会发现 JScript 语言有多么丰富。 特性 描述 JScript 特性(非-ECMA) JScript 目前的 ECMA 特性列表。 JScript 的特性 (ECMA) JScript 目前的非-ECMA 特性列表。 Microsoft Scripting 运行时特性 JScript 目前的 scripting 运行时特性列表。 语言元素 描述 ! 运算符 对表达式进行逻辑非运算。 != 运算符 比较两个表达式的值是否相等。 !== 运算符 比较两个表达式的值,看其值是否相等或据类型是否一致。 0...n 属性 返回单个参的实际值,该参来自由当前运行函的参属性返回的参对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录。 % 运算符 两个表达式的值相除,返回余。 %= 运算符 用变量的值除以表达式的值,余赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 将两个表达式的值相乘。 *= 运算符 将变量与表达式的值相乘,结果赋给变量。 + 运算符 将两个字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对单个表达式取反。 -- 运算符 变量值减 1。 -= 运算符 变量值减去表达式的值,结果赋给变量。 / 运算符 两个表达式的值相除。 /*..*/ (多行注释语句) 使 JScript 语法分析器忽略多行注释。 // (单行注释语句) 使 JScript 语法分析器忽略单行注释。 /= 运算符 变量值除以表达式的值,结果赋给变量。 < 运算符 比较一个表达式的值是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一个表达式。 >= 运算符 比较一个表达式的值是否大于等于另一个表达式。 >> 运算符 将表达式向左移位,符号位不变。 >>= 运算符 将变量的值右移由表达式指定的位符号位不变,结果赋给变量。 >>> 运算符 将表达式向左移位,包括符号位。 >>>= 运算符 将变量的值右移由表达式指定的位,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 @cc_on 语句 激活条件编译支持。 @if 语句 根据表达式的值,有条件地执行一组语句。 @set 语句 创建用于条件编译语句的变量。 abs 方法 返回一个的绝对值。 acos 方法 返回一个的反余弦。 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 加法运算符 (+) 将两个字表达式的值相加,或连接两个字符串。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函的每个参组。 Array 对象 提供对创建任何据类型的组的支持。 asin 方法 返回一个的反正弦。 赋值运算符 (=) 将一个值赋给变量。 atan 方法 返回一个的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个指示枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式执行按位异或操作。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 Boolean 对象 创建一个新的 Boolean 值。 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 callee 属性 返回正执行的函对象,它是指定的函对象的文本正文。 caller 属性 返回调用当前函的函引用。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 ceil 方法 返回大于或等于其值参的最小整。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 逗号运算符 (,) 使两个表达式连续执行。 /*..*/ (多行注释语句) 使多行注释部分被 JScript 语法分析器忽略。 注释语句 - 单行(//) 使 JScript 语法分析器忽略单行注释。 比较运算符 返回一个显示比较结果的 Boolean 值。 compile 方法 将一个正则表达式编译为内部格式。 复合赋值运算符 复合赋值运算符列表。 concat 方法 (Array) 返回一个由两个组合并组成的新组。 concat 方法 (String) 返回一个包含给定的两个字符串连接的String 对象。 条件(三元)运算符 (?:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 cos 方法 返回一个的余弦。 Date 对象 提供日期和时间的基本存储和检索。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 组件的解码版。 递减运算符(--) 将变量减一。 delete 运算符 删除对象的属性,或删除组中的一个元素。 description 属性 返回或设置关于指定错误的描述字符串。 Dictionary 对象 存储据键、项目对的对象。 dimensions 方法 返回 VBArray 的维。 除法运算符 (/) 对两个表达式执行除法运算。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 E 属性 返回 Euler 常,即自然对的底。 encodeURI 方法 将文本字符串编码为合法的通用资源标识符 (URI)。 encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时发生错误信息的对象。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对的底) 的幂。 FileSystemObject 对象 提供对计算机文件系统的访问。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其值参的最大整。 fontcolor 方法 将 HTML 带 COLOR 属性的 <FONT> 标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的 <FONT> 标识添加到 String 对象中的文本两端。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句t 对应于对象或组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函。 function 语句 声明一个新的函。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 GetObject 函 返回文件中的 Automation 对象的引用。 getSeconds 方法 使用当地时间返回 Date 对象的秒。 getTime 方法 返回 Date 对象中的时间值。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几的值。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间 (UTC) 返回 Date 对象的秒。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 Global 对象 是一个固有对象,目的是将全局方法集中在一个对象中。 global 属性 返回一个 Boolean 值,标记正则表达式使用的 global 标志状态 (g)。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符(>=) 比较两个表达式,看一个是否大于等于另一个。 hasOwnProperty 方法 返回一个 Boolean 值,标记对象是否带有指定名称的属性。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的据类型。 if...else 语句 根据表达式的值,有条件地执行一组语句。 ignoreCase 属性 返回一个 Boolean 值,标记正则表达式使用的 ignoreCase 标志状态 (i)。 递增运算符(++) 给变量加一。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 isFinite 方法 返回一个 Boolean 值,表明某个给定的是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN(不是一个)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个组中的所有元素连接在一起的 String 对象。 Labeled 语句 给语句提供一个标识符。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 lbound 方法 返回在 VBArray 中指定维所用的最小索引值。 leftContext 属性 ($`) 返回由调用者传递给函的实际参。 length 属性 (Arguments) 返回由调用者传递给函的实际参。 length 属性 (Array) 返回比组中所定义的最高元素大 1 的整值 。 length 属性 (Function) 返回为函所定义的参。 length 属性 (String) 返回 String 对象的长度。 小于运算符 (<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 LN2 属性 返回 2 的自然对。 LN10 属性 返回 10 的自然对。 localeCompare 方法 返回值表明在当前区域设置下,两个字符串是否相等。 log 方法 返回某个的自然对。 LOG2E 属性 返回以 2 为底的 e(即 Euler 常)的对。 LOG10E 属性 返回以 10 为底的e(即 Euler 常)的对。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符(!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为组返回。 Math 对象 一个固有对象,提供基本的学函和常。 max 方法 返回给定的两个表达式中的较大者。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 min 方法 返回给定的两个中的较小者。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 取模运算符 (%) 对两个表达式执行除法运算,返回余。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 multiline 属性 返回 Boolean 值,表明正则表达式使用的 multiline 标志 (m)。 乘法运算符 (*) 对两个表达式执行减法操作。 name 属性 返回错误名称。 NaN 属性 (Global) 返回特殊值 NaN,表示某个表达式不是一个。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (Number.MAX_VALUE)更小的值。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或据类型不同。 Number 对象 表示据类型和提供值常的对象。 number 属性 返回或设置与特定错误关联的值。 Object 对象 提供所有的 JScript 对象的公共功能。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒。 parseFloat 方法 返回从字符串转换而来的浮点。 parseInt 方法 返回从字符串转换而来的整。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 pop 方法 将组中的最后一个元素删除,并返回其值。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的 (-Number.MAX_VALUE)更大的值。 pow 方法 返回一个指定幂次的底表达式的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 push 方法 向组中添加新的元素,返回新的组长度。 random 方法 返回一个 0 和 1 之间的伪随机。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 正则表达式语法 在写正则表达式模式时可以使用的特殊字符和序列的列表。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 return 语句 从当前函退出并从该函返回一个值。 reverse 方法 返回一个元素反序的 Array 对象。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 round 方法 将一个指定的值表达式舍入到最近的整值。 运行时错误 JScript运行时错误列表 ScriptEngine 函 返回一个代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函 返回所使用的脚本引擎的次版本号。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date对象的值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除组中的第一个元素并返回该值。 sin 方法 返回一个的正弦。 slice 方法 (Array) 返回组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 source 属性 返回正则表达式模式的文本的复制。 splice 方法 从组中删除一个元素,必要时在该位置插入一个新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串组返回。 sqrt 方法 返回一个的平方根。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到 String 对象中的文本两端。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串并确定其位置。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 一元取相反运算符(-) 从一个表达式的值中减去另一个表达式的值。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 Syntax 错误 JScript 语法错误列表。 tan 方法 返回一个的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 组。 toDateString 方法 以字符串形式返回日期值。 toExponential 方法 返回一个用指形式表示的字符串。 toFixed 方法 返回一个字符串,表示一个用不动点记法表示的字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的日期。 toLocaleDateString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的日期。 toLocaleLowercase 方法 返回字符串,其中的所有字符都被转换成小写(考虑主机环境的当前设置)。 toLocaleString 方法 返回一个转换为使用当地时间的日期。 toLocaleTimeString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的时间。 toLocaleUppercase 方法 返回字符串,其中的所有字符都被转换成大写(考虑主机环境的当前设置)。 toLowerCase 方法 返回一个字符串,该字符串中所有字母被转换为小写字母。 toString 方法 返回一个对象的字符串表示。 toPrecision 方法 返回一个字符串,该字符串包含用指定位的指或 fixed-point 形式表示的字。 toTimeString 方法 返回以字符串形式表示的时间。 toUpperCase 方法 返回一个字符串,该字符串中所有字母都被转换为大写字母。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的日期。 try 语句 实现 JScript 的错误处理。 typeof 运算符 返回一个表示表达式的据类型的字符串。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 一元取负运算符 (-) 表示一个值表达式的相反。 undefined 属性 返回 undefined 的初始值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个组,在该组头部插入了指定的元素。 无符号右移运算符 (>>>) 将表达式向右移位,包括符号位。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC)(或 GMT)与指定日期之间的毫秒。 valueOf 方法 返回指定对象的原始值。 var 语句 声明一个变量。 VBArray 对象 提供对 Visual Basic 安全组的访问。 void 运算符 避免一个表达式返回值。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 GetObject 函 返回文件中的 Automation 对象的引用。 ScriptEngine 函 返回代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函 返回所使用的脚本引擎的次版本号。 语言元素 描述 abs 方法 返回一个的绝对值。 acos 方法 返回一个的反余弦。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 asin 方法 返回一个的反正弦。 atan 方法 返回一个的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个表明枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 ceil 方法 返回大于或等于其值参的最小整。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 compile 方法 将一个正则表达式编译为内部格式。 concat 方法(Array) 返回一个由两个组合并组成的新组。 concat 方法(String) 返回一个包含给定的两个字符串的连接的 String 对象。 cos 方法 返回一个的余弦。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 dimensions 方法 返回 VBArray 的维。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行之。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对的底) 的幂。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其值参的最大整。 fontcolor 方法 将 HTML 带 COLOR 属性的<FONT>标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的<FONT>标识添加到 String 对象中的文本两端。 fromCharCode 方法 返回 Unicode 字符值的字符串。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回位于指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 getSeconds 方法 使用当地时间返回 Date 对象的秒。 getTime 方法 返回 Date 对象中的时间。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间(UTC)返回Date对象的秒。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 hasOwnProperty 方法 返回一个 Boolean 值,表明对象是否具有指定的名称。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 isFinite 方法 返回一个 Boolean 值,表明某个给定的是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN (不是一个)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在于另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个组中的所有元素连接在一起的 String 对象。 lastIndexOf 方法 返回在 String 对象中子字符串最后出现的位置。 lbound 方法 返回在 VBArray 中指定维所用的最小索引值。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 localeCompare 方法 返回一个值,表明两个字符串在当前区域设置下是否相等。 log 方法 返回某个的自然对。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为组返回。 max 方法 返回给定的两个表达式中的较大者。 min 方法 返回给定的两个中的较小者。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒。 parseFloat 方法 返回从字符串转换而来的浮点。 parseInt 方法 返回从字符串转换而来的整。 pop 方法 删除组中的最后一个元素并返回该值。 pow 方法 返回一个指定幂次的底表达式的值。 push 方法 向组中添加新元素,返回组的新长度。 random 方法 返回一个 0 和 1 之间的伪随机。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 reverse 方法 返回一个元素反序的 Array 对象。 round 方法 将一个指定的值表达式舍入到最近的整并将其返回。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date 对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date 对象的值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除组中的第一个元素并返回该值。 sin 方法 返回一个的正弦。 slice 方法 (Array) 返回组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 splice 方法 从组中删除元素,若必要,在相应位置处插入新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串组返回。 sqrt 方法 返回一个的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到String 对象中的文本两端。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 tan 方法 返回一个的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 组。 toDateString 方法 返回以字符串形式表示的日期。 toExponential 方法 返回一个字符串,该字符串包含一个以指形式表示的字。 toFixed 方法 返回一个字符串,表明一个用 fixed-point 形式表示的字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的字符串的日期。 toLocaleDateString 方法 返回一个以字符串形式表示的日期,该日期与主机环境的当前区域设置相适应。 toLocaleLowercase 方法 返回一个字符串,其中所有的字母字符都被转换成小写(考虑主机环境的当前区域设置)。 toLocaleTimeString 方法 返回一个以字符串形式表示的时间,该时间与主机环境当前区域设置相适应。 toLocaleString 方法 返回一个转换为使用当地时间的字符串的日期。 toLocaleUppercase 方法 返回一个字符串,其中所有的字母字符都被转换成大写(考虑主机环境的当前区域设置)。 toLowerCase 方法 返回一个所有的字母字符都被转换为小写字母的字符串。 toPrecision 方法 返回一个字符串,该字符串包含用指定位的指或 fixed-point 形式表示的字。 toString 方法 返回一个对象的字符串表示。 toTimeString 方法 返回一个以字符串形式表示的时间。 toUpperCase 方法 返回一个所有的字母字符都被转换为大写字母的字符串。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的字符串的日期。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个组,在该组头部插入了指定的元素。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC) (或 GMT)与指定日期之间的毫秒. valueOf 方法 返回指定对象的原始值。 语言元素 描述 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 Array 对象 提供对创建任何据类型的组的支持。 Boolean 对象 创建一个新的 Boolean 值。 Date 对象 提供日期和时间的基本存储和检索。 Dictionary 对象 存储据键、项对的对象。 Enumerator 对象 提供集合中的项的枚举。 Error 对象 包含在运行 JScript 代码时发生的错误的有关信息。 FileSystemObject 对象 提供对计算机文件系统的访问。 Function 对象 创建一个新的函。 Global 对象 是一个内部对象,目的是将全局方法集中在一个对象中。 Math 对象 一个内部对象,提供基本的学函和常。 Number 对象 表示据类型和提供值常的对象。 Object 对象 提供所有的 JScript 对象的公共功能。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串及确定其位置。 VBArray 对象 提供对 Visual Basic 安全组的访问。 语言元素 描述 ! 运算符 对表达式执行逻辑“非”运算。 != 运算符 比较两个表达式的值,看其是否相等。 !== 运算符 比较两个表达式的值,看其是否不相等或据类型不一致。 % 运算符 对两个表达式执行除法运算,返回余。 %= 运算符 对变量和表达式执行除法运算,余赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 对两个表达式执行乘法运算。 *= 运算符 对变量和表达式执行乘法运算,结果赋给变量。 + 运算符 对两个值表达式求和,或连接两个字符串。 ++ 运算符 变量值加一。 += 运算符 将变量和表达式的值相加,结果赋给变量。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式的值减去另一个表达式的值或对一个表达式执行取负运算。 -- 运算符 变量值减一。 -= 运算符 从变量值中减表达式的值,结果赋给变量。 / 运算符 对两个表达式执行除法运算。 /= 运算符 对变量和表达式执行除法运算,结果赋给变量。 < 运算符 比较一个表达式是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式的值。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一表达式。 >= 运算符 比较一个表达式的值是否大于等于另一表达式。 >> 运算符 表达式向右移位,符号位不变。 >>= 运算符 将变量的值左移由表达式指定的位符号位不变,结果赋给变量。 >>> 运算符 表达式向右移位,包括符号位。 >>>= 运算符 将变量的值左移由表达式指定的位,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行按位异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 加法运算符 (+) 求两个值表达式的和,或连接两个字符串。 赋值运算符 (=) 将一个值赋给变量。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 (~) 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符 (^) 对两个表达式执行按位异或操作。 逗号运算符 (,) 使两个表达式连续执行。 比较运算符 返回 Boolean 值,表示比较结果。 复合赋值运算符 复合赋值运算符列表。 条件(三元)运算符(?:) 根据条件执行两个表达式之一。 递减运算符 (--) 将变量减一。 delete 运算符 删除对象的属性,或删除组中的一个元素。. 除法运算符(/) 对两个表达式执行除法运算。 相等运算符(==) 比较两个表达式,看是否相等。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符 (>=) 比较两个表达式,看一个是否大于等于另一个。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的据类型。 递增运算符(++) 给变量加一。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 小于运算符(<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符 (!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 取模运算符。 (%) 对两个表达式执行除法运算,返回余。 乘法运算符 (*) 对两个表达式执行减法操作。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或据类型不同。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 减法运算符 (-) 求两个表达式值的差。 typeof 运算符 返回一个表示表达式的据类型的字符串。 一元取相反运算符(-) 表示一个值表达式的相反无符号右移运算符 (>>>) 表达式向右移位,包括符号位。 void 运算符 避免一个表达式返回值。 语言元素 描述 0...n 属性 返回单个参的实际值,该参来自由当前运行函的参属性返回的参对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录 arguments 属性 返回一个包含传递给当前执行函的每个参组。 caller 属性 返回调用当前函的函引用。 callee 属性 返回正执行的函对象,它是指定的函对象的文本正文。 constructor 属性 指定创建对象的函。 description 属性 返回或设置关于指定错误的描述字符串。 E 属性 返回 Euler 常,即自然对的底。 global 属性 返回一个 Boolean 值,表明正则表达式使用的 global 标志 (g) 状态。 ignoreCase 属性 返回一个 Boolean 值,表明正则表达式使用的 ignoreCase 标志 (i) 状态。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastMatch 属性 ($) 返回任意正则表达式搜索中最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 leftContext 属性 ($`) 返回由调用者传递给函的实际参。 length 属性 (Arguments) 返回由调用者传递给函的实际参。 length 属性 (Array) 返回比组中所定义的最高元素大 1 的一个。 length 属性 (Function) 返回为函所定义的参。 length 属性 (String) 返回 String 对象的长度。 LN2 属性 返回 2 的自然对。 LN10 属性 返回 10 的自然对。 LOG2E 属性 返回以 2 为底的 e(即 Euler常)的对。 LOG10E 属性 返回以 10 为底的e(即 Euler常)的对。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 返回错误消息串。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 multiline 属性 返回一个 Boolean 值,表明正则表达式使用的 multiline 标志 (m) 状态。 name 属性 返回错误名称。 NaN 属性(Global) 返回特殊值 NaN,表示某个表达式不是一个。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (-Number.MAX_VALUE)更负的值。 number 属性 返回或设置与特定错误关联的值。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的 (Number.MAX_VALUE)更大的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 source 属性 返回正则表达式模式的文本的拷贝。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 undefined 属性 返回 undefined 的初始值。 语言元素 描述 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 @cc_on 语句 激活条件编译支持。 //(单行注释语句) 使单行注释被 JScript 语法分析器忽略。 /*..*/(多行注释语句) 使多行注释被 JScript 语法分析器忽略。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句 对应于对象或组中的每个元素执行一个或多个语句。 function 语句 声明一个新的函。 @if 语句 根据表达式的值,有条件地执行一组语句。 if...else 语句 根据表达式的值,有条件地执行一组语句。 Labeled 语句 给语句提供一个标识符。 return 语句 从当前函退出并从该函返回一个值。 @set 语句 创建用于条件编译语句的变量。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 try 语句 实现 JScript 的错误处理。 var 语句 声明一个变量。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 运行时错误 JScript运行时错误列表 语法错误 JScript语法错误列表
所有的整类型以二进制字位的变化及其宽度来表示。例如,byte 型值42的二进制代码是00101010 ,其中每个位置在此代表2的次方,在最右边的位以20开始。向左下一个位置将是21,或2,依次向左是22,或4,然后是8,16,32等等,依此类推。因此42在其位置1,3,5的值为1(从右边以0开始);这样42是21+23+25的和,也即是2+8+32 。 所有的整类型(除了char 类型之外)都是有符号的整。这意味着他们既能表示正,又能表示负数。Java 使用大家知道的2的补码(two's complement )这种编码来表示负数,也就是通过将与其对应的正的二进制代码取反(即将1变成0,将0变成1),然后对其结果加1。例如,-42就是通过将42的二进制代码的各个位取反,即对00101010 取反得到11010101 ,然后再加1,得到11010110 ,即-42 。要对一个负数解码,首先对其所有的位取反,然后加1。例如-42,或11010110 取反后为00101001 ,或41,然后加1,这样就得到了42。 如果考虑到零的交叉(zero crossing )问题,你就容易理解Java (以及其他绝大多语言)这样用2的补码的原因。假定byte 类型的值零用00000000 代表。它的补码是仅仅将它的每一位取反,即生成11111111 ,它代表负零。但问题是负零在整学中是无效的。为了解决负零的问题,在使用2的补码代表负数的值时,对其值加1。即负零11111111 加1后为100000000 。但这样使1位太靠左而不适合返回到byte 类型的值,因此人们规定,-0和0的表示方法一样,-1的解码为11111111 。尽管我们在这个例子使用了byte 类型的值,但同样的基本的原则也适用于所有Java 的整类型。 因为Java 使用2的补码来存储负数,并且因为Java 中的所有整都是有符号的,这样应用位运算符可以容易地达到意想不到的结果。例如,不管你如何打算,Java 用高位来代表负数。为避免这个讨厌的意外,请记住不管高位的顺序如何,它决定一个符号。 二 位逻辑运算符 位逻辑运算符有“与”(AND)、“或”(OR)、“异或(XOR )”、“非(NOT)”,分别用“&”、“|”、“^”、“~”表示,4-3 表显示了每个位逻辑运算的结果。在继续讨论之前,请记住位运算符应用于每个运算内的每个单独的位。 表4-3 位逻辑运算符的结果 A 0 1 0 1 B 0 0 1 1 A | B 0 1 1 1 A & B 0 0 0 1 A ^ B 0 1 1 0 ~A 1 0 1 0 按位非(NOT) 按位非也叫做补,一元运算符NOT“~”是对其运算的每一位取反。例如,字42,它的二进制代码为: 00101010 经过按位非运算成为 11010101 按位与(AND) 按位与运算符“&”,如果两个运算都是1,则结果为1。其他情况下,结果均为零。看下面的例子: 00101010 42 &00001111 15 00001010 10 按位或(OR) 按位或运算符“|”,任何一个运算为1,则结果为1。如下面的例子所示: 00101010 42 | 00001111 15 00101111 47 按位异或(XOR) 按位异或运算符“^”,只有在两个比较的位不同时其结果是 1。否则,结果是零。下面的例子显示了“^”运算符的效果。这个例子也表明了XOR 运算符的一个有用的属性。注意第二个运算字1的位,42对应二进制代码的对应位是如何被转换的。第二个运算字0的位,第一个运算对应位的字不变。当对某些类型进行位运算时,你将会看到这个属性的用处。 00101010 42 ^ 00001111 15 00100101 37 位逻辑运算符的应用 下面的例子说明了位逻辑运算符: // Demonstrate the bitwise logical operators. class BitLogic { public static void main(String args[]) { String binary[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" }; int a = 3; // 0 + 2 + 1 or 0011 in binary int b = 6; // 4 + 2 + 0 or 0110 in binary int c = a | b; int d = a & b; int e = a ^ b; int f = (~a & b) | (a & ~b); int g = ~a & 0x0f; System.out.println(" a = " + binary[a]); System.out.println(" b = " + binary[b]); System.out.println(" a|b = " + binary[c]); System.out.println(" a&b = " + binary[d]); System.out.println(" a^b = " + binary[e]); System.out.println("~a&b|a&~b = " + binary[f]); System.out.println(" ~a = " + binary[g]); } } 在本例中,变量a与b对应位的组合代表了二进制所有的 4 种组合模式:0-0,0-1,1-0 ,和1-1 。“|”运算符和“&”运算符分别对变量a与b各个对应位的运算得到了变量c和变量d的值。对变量e和f的赋值说明了“^”运算符的功能。字符串组binary 代表了0到15 对应的二进制的值。在本例中,组各元素的排列顺序显示了变量对应值的二进制代码。组之所以这样构造是因为变量的值n对应的二进制代码可以被正确的存储在组对应元素binary[n] 中。例如变量a的值为3,则它的二进制代码对应地存储在组元素binary[3] 中。~a的值与字0x0f (对应二进制为0000 1111 )进行按位与运算的目的是减小~a的值,保证变量g的结果小于16。因此该程序的运行结果可以用组binary 对应的元素来表示。该程序的输出如下: a = 0011 b = 0110 a|b = 0111 a&b = 0010 a^b = 0101 ~a&b|a&~b = 0101 ~a = 1100 三 左移运算符 左移运算符<<使指定值的所有位都左移规定的次。它的通用格式如下所示: value << num 这里,num 指定要移位值value 移动的位。也就是,左移运算符<<使指定值的所有位都左移num位。每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。这意味着当左移的运算是int 类型时,每移动1位它的第31位就要被移出并且丢弃;当左移的运算是long 类型时,每移动1位它的第63位就要被移出并且丢弃。 在对byte 和short类型的值进行移位运算时,你必须小心。因为你知道Java 在对表达式求值时,将自动把这些类型扩大为 int 型,而且,表达式的值也是int 型。对byte 和short类型的值进行移位运算的结果是int 型,而且如果左移不超过31位,原来对应各位的值也不会丢弃。但是,如果你对一个负的byte 或者short类型的值进行移位运算,它被扩大为int 型后,它的符号也被扩展。这样,整值结果的高位就会被1填充。因此,为了得到正确的结果,你就要舍弃得到结果的高位。这样做的最简单办法是将结果转换为byte 型。下面的程序说明了这一点: // Left shifting a byte value. class ByteShift { public static void main(String args[]) { byte a = 64, b; int i; i = a << 2; b = (byte) (a << 2); System.out.println("Original value of a: " + a); System.out.println("i and b: " + i + " " + b); } } 该程序产生的输出下所示: Original value of a: 64 i and b: 256 0 因变量a在赋值表达式中,故被扩大为int 型,64(0100 0000 )被左移两次生成值256 (10000 0000 )被赋给变量i。然而,经过左移后,变量b中惟一的1被移出,低位全部成了0,因此b的值也变成了0。 既然每次左移都可以使原来的操作翻倍,程序员们经常使用这个办法来进行快速的2 的乘法。但是你要小心,如果你将1移进高阶位(31或63位),那么该值将变为负值。下面的程序说明了这一点: // Left shifting as a quick way to multiply by 2. class MultByTwo { public static void main(String args[]) { int i; int num = 0xFFFFFFE; for(i=0; i<4; i++) { num = num << 1; System.out.println(num); } } 这里,num 指定要移位值value 移动的位。也就是,左移运算符<<使指定值的所有位都左移num位。每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。这意味着当左移的运算是int 类型时,每移动1位它的第31位就要被移出并且丢弃;当左移的运算是long 类型时,每移动1位它的第63位就要被移出并且丢弃。 在对byte 和short类型的值进行移位运算时,你必须小心。因为你知道Java 在对表达式求值时,将自动把这些类型扩大为 int 型,而且,表达式的值也是int 型。对byte 和short类型的值进行移位运算的结果是int 型,而且如果左移不超过31位,原来对应各位的值也不会丢弃。但是,如果你对一个负的byte 或者short类型的值进行移位运算,它被扩大为int 型后,它的符号也被扩展。这样,整值结果的高位就会被1填充。因此,为了得到正确的结果,你就要舍弃得到结果的高位。这样做的最简单办法是将结果转换为byte 型。下面的程序说明了这一点: // Left shifting a byte value. class ByteShift { public static void main(String args[]) { byte a = 64, b; int i; i = a << 2; b = (byte) (a << 2); System.out.println("Original value of a: " + a); System.out.println("i and b: " + i + " " + b); } } 该程序产生的输出下所示: Original value of a: 64 i and b: 256 0 因变量a在赋值表达式中,故被扩大为int 型,64(0100 0000 )被左移两次生成值256 (10000 0000 )被赋给变量i。然而,经过左移后,变量b中惟一的1被移出,低位全部成了0,因此b的值也变成了0。 既然每次左移都可以使原来的操作翻倍,程序员们经常使用这个办法来进行快速的2 的乘法。但是你要小心,如果你将1移进高阶位(31或63位),那么该值将变为负值。下面的程序说明了这一点: // Left shifting as a quick way to multiply by 2. class MultByTwo { public static void main(String args[]) { int i; int num = 0xFFFFFFE; for(i=0; i<4; i++) { num = num << 1; System.out.println(num); } } } 该程序的输出如下所示: 536870908 1073741816 2147483632 -32 初值经过仔细选择,以便在左移 4 位后,它会产生-32。正如你看到的,当1被移进31 位时,字被解释为负值。 四 右移运算符 右移运算符>>使指定值的所有位都右移规定的次。它的通用格式如下所示: value >> num 这里,num 指定要移位值value 移动的位。也就是,右移运算符>>使指定值的所有位都右移num位。下面的程序片段将值32右移2次,将结果8赋给变量a: int a = 32; a = a >> 2; // a now contains 8 当值中的某些位被“移出”时,这些位的值将丢弃。例如,下面的程序片段将35右移2 次,它的2个低位被移出丢弃,也将结果8赋给变量a: int a = 35; a = a >> 2; // a still contains 8 用二进制表示该过程可以更清楚地看到程序的运行过程: 00100011 35 >> 2 00001000 8 将值每右移一次,就相当于将该值除以2并且舍弃了余。你可以利用这个特点将一个进行快速的2的除法。当然,你一定要确保你不会将该原有的任何一位移出。 右移时,被移走的最高位(最左边的位)由原来最高位的字补充。例如,如果要移走的值为负数,每一次右移都在左边补1,如果要移走的值为正,每一次右移都在左边补0,这叫做符号位扩展(保留符号位)(sign extension ),在进行右移操作时用来保持负数符号。例如,–8 >> 1 是–4,用二进制表示如下: 11111000 –8 >>1 11111100 –4 一个要注意的有趣问题是,由于符号位扩展(保留符号位)每次都会在高位补1,因此-1右移的结果总是–1。有时你不希望在右移时保留符号。例如,下面的例子将一个byte 型的值转换为用十六 进制表示。注意右移后的值与0x0f进行按位与运算,这样可以舍弃任何的符号位扩展,以便得到的值可以作为定义组的下标,从而得到对应组元素代表的十六进制字符。 // Masking sign extension. class HexByte { static public void main(String args[]) { char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'' }; byte b = (byte) 0xf1; System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]);}} 该程序的输出如下: b = 0xf1 五 无符号右移 正如上面刚刚看到的,每一次右移,>>运算符总是自动地用它的先前最高位的内容补它的最高位。这样做保留了原值的符号。但有时这并不是我们想要的。例如,如果你进行移位操作的运算不是字值,你就不希望进行符号位扩展(保留符号位)。当你处理像素值或图形时,这种情况是相当普遍的。在这种情况下,不管运算的初值是什么,你希望移位后总是在高位(最左边)补0。这就是人们所说的无符号移动(unsigned shift )。这时你可以使用Java 的无符号右移运算符>>> ,它总是在左边补0。 下面的程序段说明了无符号右移运算符>>> 。在本例中,变量a被赋值为-1,用二进制表示就是32位全是1。这个值然后被无符号右移24位,当然它忽略了符号位扩展,在它的左边总是补0。这样得到的值255被赋给变量a。 int a = -1; a = a >>> 24; 下面用二进制形式进一步说明该操作: 11111111 11111111 11111111 11111111 int型-1的二进制代码>>> 24 无符号右移24位00000000 00000000 00000000 11111111 int型255的二进制代码 由于无符号右移运算符>>> 只是对32位和64位的值有意义,所以它并不像你想象的那样有用。因为你要记住,在表达式中过小的值总是被自动扩大为int 型。这意味着符号位扩展和移动总是发生在32位而不是8位或16位。这样,对第7位以0开始的byte 型的值进行无符号移动是不可能的,因为在实际移动运算时,是对扩大后的32位值进行操作。下面的例子说明了这一点: // Unsigned shifting a byte value. class ByteUShift { static public void main(String args[]) { int b = 2; int c = 3; a |= 4; b >>= 1; c <<= 1; a ^= c; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); } } 该程序的输出如下所示: a = 3 b = 1 c = 6 还不清楚,移位运算有多大的用处,可是面试时经常会考。现在重温一下子。 原文地址:(http://www.ddvip.net/program/java/index1/28.htm)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9号信箱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值