一、JavaScript基础
1.什么是JavaScript?
JavaScript是运行在客户端的解释性脚本语言;
扩展:
A.HTML、CSS、JavaScript都是在浏览器运行,所以称为客户端技术,会存在
浏览器兼容性;
B.所有的编程语言执行方式有两种:编译、解释;
C.JavaScript与Java之间不存在任何关系;
(小故事:JavaScript最早命名为LiveScript,但为更好推广该产品,于是在
征得Sun同意的情况下,将其命名为JavaScript)
D.JavaScript是Netscape(网景)公司在其Netscape Navigator浏览器中首先推出的;
E.Microsoft在其IE浏览器中推出JScript与JavaScript抗衡;
F.Netscape将JavaScript提交ECMA(欧洲计算机制造商协会),建议
其JavaScript定立为脚本语言的标准,最后定立脚本语言的标准--ECMAScript[简称ES](基本上与JavaScript1.5相同);
所有的浏览器都兼容ECMAScript262-3的标准;
ECMAScript最新版本为ES-6;
G.JavaScript的由ECMAScript、DOM、BOM组成;
H.在EMAScript中规定数据类型、关键字、保留关键字、流程控制语句、内置对象等;
I.如果JS代码既存在服务器代码,又存在客户端代码,那么先运行服务器脚本,然后再运行客户端脚本;
二、JavaScript语法结构
1)引入外部的JS文件
JavaScript文件的扩展名为.js
<script type="text/javascript" src="JS文件URL"></script>
2)书写于文档内部
<script type="text/javascript">
...
...
</script>
JavaScript语法结构说明:
A.JS严格区分大小写;
B.每行JS代码"必须"以分号结尾;
三、变量
3.1)什么是变量?
变量是指存储在内存有名称的信息,其值在程序运行期间可以发生变化;
3.2)声明变量
var 变量名称;
var 变量名称 = 值;
说明:
A.var关键字可以省略,但不建议省略;
B.变量必须以字母或下划线开头,包含字母、数字、下划线,但不能包含空格、斜线、反斜线等特殊符号;
C.变量名称禁止与系统关键字、保留关键字相同;
3.3)关键字
var、if、else、switch、case、break、for、in、do、while、function
3.4)保留关键字
float、class、integer、boolean、string、interface、extends、implements、public、protected、private
四、数据类型
undefined(未定义),是指声明但没有赋值或赋值为undefined的变量或未定义返回值的函数或方法;
string:必须括在单引号或双引号之间;
转义符
\n,换行
\r,回车
\t,水平制表符
\v,垂直制表符
\f,换页(走纸)
\\,反斜线
\',单引号
\",双引号
number,数值或浮点数;
boolean,布尔型,结果只能为true或false;
function,函数,实现一次定义,多次调用;
object,对象
null:空值(如断开继承时)
在通过typeof()函数进行测试时,undefined的类型为undefined,而null的类型为object
五、流程控制语句
1)if语句
if(条件表达式){
执行代码
...
}
2)if...else语句
if(条件表达式){
执行代码
...
} else {
执行代码
...
}
3)if...else if..else语句
if(条件表达式){
执行代码
...
} else if(条件表达式) {
执行代码
...
} ... else{
执行代码
...
}
4)switch
switch(测试表达式){
case 值1:
...
break;
case 值2:
...
break;
...
default:
...
break;
}
说明:switch将进行全等运算;
5)for语句
for(expression1;expression2;expression3){
执行代码;
...
}
6)while语句
while(条件表达式){
执行代码;
...
}
7)do...while语句
do{
执行代码;
...
} while(条件表达式);
8)for...in语句
for(key in array/object) {
执行代码;
...
}
ES5中支持数组的forEach()方法
array.forEach(function(value,index){
执行代码;
...
});
六、运算符
6.1)字符运算符: +
6.2)数学运算符:+(正数)、-(负数)、*、/、%、+、-
6.3)自增/自减运算符: n++、n--、++n、--n
后缀形式:先使用,后加减
前缀形式:先加减,后使用
6.4)比较运算符:>、>=、==、!=、===、!==、<=、<
6.5)逻辑运算符:!、&&、||
七、内置对象
7.1)String对象
声明string对象
直接量方式
var 变量名称 = '值';
var 变量名称 = "值";
构造函数方式
var 变量名称 = new String('[值]')
属性
length
描述:获取字符串的长度
语法:int object.length
方法
toLowerCase()
描述:字符串转换成小写
语法:string object.toLowerCase(void)
toUpperCase()
描述:字符串转换成大写
语法:string object.toUpperCase(void)
substr
描述:截取字符串
语法:string object.substr(int start[,int length])
说明:
A.字符从0开始编号;
B.如果没有指定length参数,则返回从开始位置到字符串结尾之间的内容
C.如果start参数为负数,则倒数;
substring
描述:截取字符串
语法:string object.substring(int start[,int end])
说明:
A.如果没有指定start参数,则返回从开始位置到字符串结尾之间的内容
B.包含起始位,但不包含结束位;
replace()
描述:字符串替换
语法:
string object.replace(string search,string replacement)
string object.replace(object RegExp,string replacement)
search()
split()
描述:拆分字符串
语法:
array object.split(string delimiter)
array object.split(object RegExp)
7.2)Math对象
说明:Math对象是一个静态对象;
访问属性
Math.属性名称
调用方法:
Math.方法名称()
属性
Math.PI
Math.SQRT2
方法
Math.ceil()
描述:进一取整
语法:number Math.ceil(number arg)
Math.floor()
描述:舍一取整
语法:number Math.floor(number arg)
Math.pow()
描述:幂运算
语法:number Math.pow(number base,number exp)
Math.sqrt()
描述:获取平方根
语法:number Math.sqrt(number arg)
Math.random()
描述:产生随机数(0<=n<1)
语法:number Math.random(void)
round()
描述:四舍五入(只能保留到整数位)
语法:number Math.round(number arg)
7.3)Date对象
创建Date对象
var 变量 = new Date();
方法
getYear()
描述:获取年份(从1900年到现在经历的年份)
语法:int object.getYear(void)
getFullYear()
描述:获取年份
语法:int object.getFullYear(void)
getMonth()
描述:获取月份(返回范围为0~11)
语法:int object.getMonth(void)
getDate()
描述:获取是该月的第几天
语法:int object.getDate(void)
getDay()
描述:获取星期的第几天(0为星期日,依次类推)
语法:int object.getDay(void)
getHours()
描述:返回小时(范围为0~23)
语法:int object.getHours(void)
getMinutes()
描述:返回分钟(范围为0~59)
语法:int object.getMinutes(void)
getSeconds()
描述:返回秒数(范围为0~59)
语法:int object.getSeconds(void)
getMillseconds()
描述:返回毫秒数(范围为0~999)
语法:int object.getMilliseconds(void)
getTime()
描述:返回毫秒级时间戳
语法:int object.getTime(void)
7.4)Array对象
创建Array对象
构造函数方式
var 变量名称 = new Array(int length)
var 变量名称 = new Array(value,value,...)
直接量方式
var 变量名称 = [[value][,...]]
属性
length
描述:获取数组成员数量
语法:int object.length
方法
push()
描述:在数组的未尾添加一个或多个成员
语法:int object.push(mixed value[,...])
unshift()
描述:在数组的开头添加一个或多个成员
语法:int object.unshift(mixed value[,...])
shift()
描述:删除数组的第一个成员,并且返回该成员
语法:mixed object.shift(void)
pop()
描述:删除数组的最后一个成员,并且返回该成员
语法:mixed object.pop(void)
join
描述:将数组成员使用分隔符连接成字符串
语法:
string object.join(void)
string object.join(string separator)
7.5)RegExp对象
直接量方式
var 变量名称 = /正则表达式/[修正符]
构造函数方式
var 变量名称 = new RegExp('正则表达式'[,修正符])
修正符
g(global),全局
i(ignore),忽略大小写
元字符
\s,匹配任何空白,等价于[\n\r\t\v\f]
\S,匹配任何非空白,等价于[^\n\r\t\v\f]
\d,匹配任何数字,等价于[0-9]
\D,匹配任何非数字,等价于[^0-9]
\w,匹配任何单词字符,等价于[0-9a-zA-Z_]
\W,匹配任何非单词字符,等价于[^0-9a-zA-Z_]
.,匹配除换行外的任何字符
转义符
\n,换行
\r,回车
\t,水平制表符
\v,垂直制表符
\f,换页(走纸)
\\,反斜线
\',单引号
\",双引号
\.,点本身
\|,竖线
\[,左侧方括号
\],右侧方括号
\(,左侧圆括号
\),右侧圆括号
\{,左侧花括号
\},右侧花括号
\?,问号
\*,星号
\+,加号
量词
?,匹配零次或一次,等价于{0,1}
*,匹配至少零次,等价于{0,}
+,匹配至少一次,等价于{1,}
{m},匹配m次
{m,},匹配至少m次
{m,n},匹配至少m次,至多n次
test()
描述:检测字符串是否符合正则表达式的规范
语法:boolean object.test(string str)