JavaScript学习
数据类型
- 整数 number 包含整数和浮点数
- 布尔 boolean
- 字符串类型 string 必须用双引号或者单引号括起来
- 未定义类型 undifined 专门用来确定一个已经创建但是没有初始值的变量
- 空类型 null 用于表面某个变量为空
- 对象类型 object , JavaScript里面的对象,数组
转换和字符串操作
- 转字符串 通过 + 号,或者 toString()方法
- 通过 parseInt()将字符串转换成整型
- 通过 parseFloat()将字符串转换成浮点型
- charAt()获取字符串指定索引处的字符
- toUpperCase()将所有字母变成大写
- toLowerCase()将所有字母变成小写
- indexOf()返回字符串中出现特定字符串第一次出现的位置
- substring()返回字符串的某个子串
- slice()返回字符串的某个子串,支持负数参数,功能更强大
- concat()用于将多个字符串拼接成一个字符串
- replace()将某个字符串的子串替换成目标子串
- split()将某个字符串按照指定分隔符拆分
- match()正则匹配搜索, 返回搜索的字符串
- search()正则匹配搜索,返回索引
比较2个字符串使用==,不需要使用equals
正则表达式
创建正则表达式
var reg = pattern;
var reg = /aaa/;//不要写引号
var reg = new RegExp(pattern);
RegExp对象的常用方法
- exec(str)检查字符串中指定的值, 如果找得到值,并确定其位置
- test(str)检索字符串中是否有满足条件的值,返回true或者false
通配符
.匹配任意字符
\d匹配数字类型
\D匹配非数字类型
\s匹配空白字符,空格,换行
\S匹配非空白字符
\w匹配数字,字母,下划线
\W匹配非数字,字母,下划线
\b匹配字母边界
\B匹配非字母边界
\b以..开头, \ba 以a开头, o\b以o结尾
[abc]查找方括号里面的任何字符
[^abc]查找任何不在方括号里面的字符
[0-9]查找任何从0到9的数字
[a-z]查找任何从小写a到小写z的字符
[A-Z]查找任何从大写A到大写Z的字符
[A-z]查找任何从大写A到小写z的字符
(red|blue|green)查找任何指定的选项
正则表达式的量词
JavaScript的数组
var arr1 = [2,3,4];
var arr2 = [];
var arr3 = new Array();
特点
- 数组长度可变, 总长度等最大索引+1
- 同一数组中的元素类型可以互不相同
- 当访问为副总的数组元素时, 该元素为undefined,不会数组越界
运算符
算术运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
其他运算符
三目运算符?
-
逗号运算符,返回最右边表达式的值
var a,b,c,d; a = (b=5,c=2,d=3); //a = 3
void运算符
typeof判断类型
instanceof判断子类型
控制流程
条件控制
if-else
if - else if - else
switch(表达式){case:break;}
循环控制
-
while(循环条件){}
循环次数不确定时,使用
do{}while(循环条件)至少执行一次
-
for(表达式1,表达式2,表达式3)循环
循环次数确定时,使用
for()
-
for(变量 in 对象)
遍历数组中的所有数组元素,遍历JavaScript对象的所有属性
break跳出循环
continue跳过本次循环
特殊语句
语句块
{
var a = 1;
var b = 'a';
}
空语句
异常抛出语句
throw new Error("aaaa");
异常捕获语句
try{
}catch(e){
console.log(e.message);
}finally{
}
with语句(和kotlin的with一样)
with(document){
}
函数
函数定义
命名函数 function 函数名(参数列表){执行语句;return 返回值,可以没有}
function t(){
return "hello";
}
匿名函数 function(参数列表){执行语句;return 返回值,可以没有}
var t = function(){
return "hello";
}
t();//调用
使用function类构造匿名函数
new Function(参数列表,函数执行体)
函数调用
-
直接调用函数
对象.函数引用
当声明的一个函数没有指明分配给哪个对象使用的时候,默认分配给window对象
-
以call方法调用函数
函数引用.call(调用者,参数1,参数2,...)
-
以apply方法调用函数
函数引用.apply(调用者,arguments)
arguments相当于数组,用来存放多个参数,和call方法类似
function show(name,age){
alert("name: "+name+" age: "+age);
}
show("zhangsan",20);
show.call(window,"zhangsan",20);
show.apply(window,["zhangsan",20]);
//函数作为参数
function show2(arr,func){
func.call(window,arr);
}
show2([1,2,3,4],function(arr){
for(i in arr){
document.write(arr[i]+"<br/>")
}
});
常用的内置对象
Date
-
创建方式
new Date(); new Date(month dd,yyyy hh:mm:ss); new Date(yyyy,month,dd,hh,mm,ss); new Date(yyyy,month,dd); new Date(ms);
-
Date对象获取时间细节方法
getDate();//返回一个月的某一天 (1~31) getDay();//返回一周中的某一天(0,6),就是星期 getMonth();//返回月份(0,11) getFullYear();//返回4位数字年份 getHours();//返回小时(0,23) getMinutes();//返回分钟(0,59) getSeconds();//返回(0,59) getTime();//返回从1970年1月1日至今的毫秒数
Math
abs(x);//返回绝对值
cell(x);//上舍入
floor(x);//下舍入
max(x,y);//返回x,y中的最大值
min(x,y);//返回x,y中的最小值
pow(x,y);//返回x的y次幂
random();//返回0~1的随机数
round(x);//把数4舍5入为最接近的整数
sqrt(x);//返回平方根
对象的创建
-
使用new关键字调用构造器创建对象
function Student(name,age){ this.name = name; this.age = age; } var s1 = new Student(); var s2 = new Student("zhangsan",20);
-
使用Object创建对象
var myobj = new Object(); myobj.name = "zhangsan"; myobj.age = 20; //相当于java的tostring, this指向myobj myobj.info = function(){ doucument.write("my name is: "+this.name +"<br/>"); doucument.write("my age is: "+this.age +"<br/>"); } myobj.info();
-
使用JSON语法创建对象(javaScript Object Notaion)
{name:"zhangsan",age:20}//JSON对象 {people:[//JSON数组 {name:"zhangsan",age:20}, {name:"zhangsan2",age:21}, {name:"zhangsan3",age:22} ]} //JSON对象创建举例 var p = { name:"zhangsan", age:20, info:function(){ document.write("name: "+this.name+" , age: "+this.age); } } p.info();