JS第三周小结

329 阅读7分钟

一、字符串的API

1、转义字符 \

1.将字符串中和程序冲突的字符转为原文

2.包含特殊功能的符号

\n:字符串换行; \t:制表符

3.输出unicode编码的字符

\uXXX: 第一个汉字:\u4e00; 最后一个汉字:\u9fa5;

2、大小写转换

将字符串中每个英文字母统一转为大写或者小写; 何时使用:只要程序不区分大小写,就需要统一转为大写或者小写,再比较(验证码)

1.转大写:var upper=str.toUpperCase();

2.转小写:var lower=str.toLowerCase();

3、获取指定位置的字符

var newstr=str.charAt(i); 不如直接使用str(i);

4、获取指定位置字符的ascii码

var asc=str.CharCodeAt(i) 搭配上循环可以得到每个字的ascii码

5、根据ascii码转回原文

var 原文=String.fromCharCode(ascii);

6、检索字符串(获取关键字的下标)

var i=str/arr.indexOf("关键字",starti); 从starti位置开始,查找右侧第一个关键字的位置,starti省略则从0位置开始查找; 1.返回值:找到了返回第一个关键字的第一个下标; 没有找到,返回-1 2.作用:判断有没有或者不要有重复的; 3.数组也可以使用此方法;

7、截取子字符串

1.var substr=str/arr.slice(starti,endi+1) 和数组的用法一样

2.var substr=str.substring(starti,endi+1) 不支持负数参数

3.var substr=substr(starti,n) 支持负数参数,n代表截取个数

8、拼接字符串

var newStr=str.concat("新字符串") === +运算

9、替换字符串

var newStr=str.replace("关键字"/RegExp,"新内容");

10、切割字符串

var arr=str.split("自定义切割符"); 作用:将字符串转为数组; 特殊:1.切割后,切割符就不存在; 2.切割符是一个空字符串"",切散每一个字符;

二、正则表达式

定义字符串中字符出现规则的表达式 何时用:切割、替换、验证

1、最简单的正则:

关键字原文“no”---/no/后缀 后缀g:全部 i:忽略大小写

2、备选字符集:

/^[备选字符集]$/

强调:1.一个中括号只管一个字符 2.正则表达式只要满足就不管后续,从头到尾全部匹配:前加^后加$

特殊:如果备选字符集中的ascii是连续的,那么可以用-省略掉中间的部分 eg:一位数字:[0-9] 一位字母:[A-Za-z] 一位字母、数字、下划线:[0-9A-Za-z_] 一位汉字:[\u4e00-\u9fa5]

3、预定义字符集

1.一位数字:\d === [0-9]

2.一位数字、字母、下划线:\w === [0-9A-Za-z_]

3.一位空白字符:\s 包括:空格、换行、制表符

4、量词

规定一个字符集出现的次数

1.有明确数量:

字符集{n,m}:前边相邻的字符集,至少n个,最多m个 字符集{n,}:前边相邻的字符集,至少n个,多了不限 字符集{n}:前边相邻的字符集,必须n个

2.没有明确数量:

?:前边相邻的字符集,可有可无,最多1个 *:前边相邻的字符集,可有可无,多了不限 +:前边相邻的字符集,至少一个,多了不限

5、选择和分组:

选择:在多个规则中选一个:规则1|规则2 分组:将多个子规则临时组成了一组规则:(规则1|规则2)

6、指定匹配位置:

^:开头 :结尾验证:前:结尾 验证:前加^后加:表示从头到尾要求完全匹配

7、密码强度验证

预判公式:eg:

/^(?![0-9]+)规则)规则/ -> 不能全由数字组成

/^(?![a-z]+)规则)规则/ -> 不能全由小写字母组成

/^(?![0-9a-z]+)[09AZaz]4)[0-9A-Za-z]{4}/; - 不能全由数字组成,也不能全由小写字母组成,也不能由数字和小写的组合组成 - 至少一个大写字母

4位密码,数字和字母的组合,至少出现一位数字和大写字母: var reg=/^(?![0-9a-z]+)(?![AZaz]+)(?![A-Za-z]+)[0-9A-Za-z]{4}$/

4位密码,数字和字母的组合,至少出现一位数字和大写字母和小写字母: var reg=/^(?![0-9a-z]+)(?![AZaz]+)(?![A-Za-z]+)(?![A-Z0-9]+)[09AZaz]4)[0-9A-Za-z]{4}/

三、支持正则表达式的API:替换、切割

1、切割

var arr=str.split(reg);

2、替换

1.基本替换

str=str.replace(/正则表达式/后缀,"新内容")

2.高级替换

eg:

str=str.replace(/正则表达式/后缀,function(a,b,c){
          return a.length==2?"**":"***";
			})

3.格式化

eg:

var str="500103198602215933";
var reg=/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/;
str=str.replace(reg,function(a,b,c,d,e,f,g,h){
                return b+"年"+c+"月"+d+"日"
})
console.log(str);

四、正则对象

1、创建

1.直接量

var reg=/正则表达式/后缀;

2.构造函数

var reg=new RegExp("正则表达式","后缀");

2.API:验证

var bool=reg.test(用户输入的内容); true->验证通过 false->验证失败

五、Math对象API

专门提供了数学计算的API,不需要创建,直接使用 Math.PI===3.1415926不需要我们创建

1、取整

1.上取整

Math.ceil(num); 超过一点点,就取下一个整数

2.下取整

Math.floor(num); 无论超过多少,都会省略掉小数部分

3.四舍五入取整

Math.round(num);

4.所有取整方式

Math的三个、ParseInt、num.toFixed(d)(可以四舍五入保留小数位数,但是结果是一个字符串,需要搭配ParseInt)

5.笔试题

eg:不允许使用toFixed的情况下,自己封装一个函数,实现toFixed的功能,要求能有四舍五入,并且保留小数位数的功能

function round(num,d){
num*=Math.pow(10,d);
num=Math.round(num);
num/=Math.pow(10,d);
return num;
}
var result=round(3.5,0);
console.log(result);

2、乘方和开方

1.乘方

Math.pow(底数,幂) - 代替连乘操作

2.开方

Math.sqrt(num) - 只能开平方

3、最大值和最小值

Math.Max/Min(......)

4、绝对值

Math.abs(负数)

5、随机数

Math.random():在0-1之间取出一个随机的小数,可能取到0,但是不可能取到1,意味着取不到最大值

公式:parseInt(Math.random()*(max-min+1)+min);

六、Date对象

1、创建

1.创建一个当前日期时间:

var now=new Date();

2.创建一个自定义时间:

var birth=new Date("yyyy/MM/dd hh:mm:ss");

3.复制一个日期

var end=new Date(start); 日期的所有的API都是直接修改原日期对象,无法获取修改之前的日期 所以,在执行API之前都要先进行复制,然后再操作复制后的日期

七、Date API

1、分量

1

年 FullYear:当前的年份的数字

月 Month:0-11

日 Date:1-31

星期 Day:0-6,外国人的眼里星期天才是一周的第一天

时 Hours:0-23

分 Minutes:0-59

秒 Seconds :0-59

2、API

getXXX负责获取某一个分量的值

setXXX负责设置某一个分量的值

对某个分量进行操作: date.setXXX(date.getXXX+/-n);

八、Error对象

1、浏览器自带的四种错误类型

1.语法错误

SyntaxError - 多半都是符号写错

2.引用错误

ReferenceError - 没有创建就直接使用

3.类型错误

TypeError -对象与方法没有对应,错误的用了不属于自己的方法

4.范围错误

RangeError - 只有一个API会碰到:num.toFixed(d); d的取值范围只能在0-100之间

2、错误处理

发生错误,不希望报错,而是给一个错误提示,让后续代码依然可以继续执行

语法:

try{
       可能出错的代码
	}cathc(err){
	        console.log(err);//err就是我们的错误提示,英文
		console.log("中文的错误提示")
	}

try...catch性能很差,可以直接用分支结构代替

3、抛出自定义错误:

throw new Error("自定义错误信息") - 只要是报错就会卡主后续代码

九、Function对象

1、重载overload

相同的函数名,根据传入的实参的不同,可以自动选择对应的函数进行执行,js的语法不支持重载, arguments对象可以解决这个问题

arguments

只能在函数中使用,自动创建,是一个类数组对象(支持下标、length、遍历),可以接收住所有的传入的实参

arguments的作用

1.实现重载:通过在函数内部判断arguments的不同,执行不同的操作; 2.函数不再需要形参; 3.正式开发中,可以将多个函数整合为一个函数;

2、匿名函数

1.匿名函数自调

(function(){
	//以后可以代替全局代码写法,尽量的不要再去外部书写任何代码
})();

2.匿名函数回调

将函数作为一个实参,传递给其他函数调用 eg:

arr.sort(function(){})

str.replace(reg,function(){})

elem.onclick=function(){}

十、扩展