一、函数
一般函数 :function
函数有内置函数和自定义函数
使用分为:声明、调用
关键字函数声明部分也会被提升到作用域最上方。
基本语法:
function fun(){//声明
代码;
}
fun()//调用
表达式形式函数:将function定义的函数赋值给变量。
形式参数、实际参数
局部变量、全局变量
作用域scope(面试重点)
作用域链:函数作用域中可使用全局作用域中的全局变量,即沿作用域链向上查找。
return
在函数体中使用,使用后后续代码不在执行,且返回函数执行的结果,即函数体外面可以接收结果。
封装函数,是否为水仙花数字
function isShuixianhua(num){
var a=num%10,b=parseInt(num/10)%10,c=parseInt(num/100);
var d=Math.pow(b,3)+Math.pow(a,3)+Math.pow(c,3);//个十百位的三次方之和
if(d==num){
reture ture;
}else{
reture false;
}
}
isShuixianhua(65)
//判断三位数字中的水仙花数字
for(var i=100;i<1000;i++){
var bol=isShuixianhua(i)
if(bol){
cnsole.log(n+"是水仙花数字")
}
}
封装函数,是否为完美数字
完美数字:其约数之和是这个数。
function isprefectNum(num){
var sunm=0;
for(var i=1;i<num:i++){
if(num%i==0){
sum+=i;
}
}
if(sum==num){
return true;
}else{
return false;
}
}
//调用
var a=isprefectNum(33);
console.log(a);
//盘点1-1000之间的完美数字有哪些
for(var j=1;j<=1000;j++){
if(isprefectNum(j)){
console.log(j+"是完美数字");
}
}
回调函数CallBack
当某一个函数执行时,传递的实参时另一个函数声明部分,这个实参的函数即为回调函数。
递归
函数自己调用自己。
IIFE
immediately invoking function express
在声明表达式函数的同时立刻执行一次
每个IIFE都有独立的作用域,相互不影响。
var fun= function(){
.......;
}();//在表达式函数后加小括号。
关键字函数形式不能使用IIFE,但可以转换为表达式函数,方法如下:
1.在关键字函数前加+和-和!符号。
2.将整个关键字函数用小括号括起来。
二、数组array
数组下标从0开始,可动态修改数组数据,增加、删除、替换,默认数组为undifined
1.length属性
获取数组长度。
console.log(arr.length)
经常结合循元素环语句遍历数组
var arr=["张龙","赵虎","王朝","马汉","张飞","关羽"];
for(var i=0;i<=arr.length:i++){
console.log(arr[i]);
}
2.push、pop方法
push:向数组尾部添加一个或多个元素
pop:向数组尾部删除一个元素,返回删除值
var arr=["张龙","赵虎","王朝","马汉","张飞","关羽"];
arr.push("曹操","孙权");//数组尾部添加了元素
arr.pop()//数组尾部仅删除一个元素。
3.shift、unshift方法
unshift:数组头部添加一个或多个元素
shift:数组头部删除一个元素
4.join、reverse方法
join:通过某个字符数组拼接转换为字符串
reverse:将数组倒置。
var arr=["张龙","赵虎","王朝","马汉","张飞","关羽"];
str1 = arr.join(*);//张龙*赵虎*王朝*马汉*张飞*关羽
arr.reverse()//倒置数组
5.indexOf、includes方法
indexOf:获取数组某个元素的索引值【下角标】,返回-1表示此元素未出现。
includes:检测某个元素是否存在于此数组,若是返回布尔值真,否则返回假。
var arr=["张龙","赵虎","王朝","马汉","张飞","关羽"];
arr.indexOf("张龙");//0
arr.includes("刘备");//false
6.slice、splice方法
slice:从起始数组中切割出一个新数组。【对原数组无影响】
splice:对数组进行切割、插入、替换。【对原数组有影响】
arr.slice(起始索引值);//从起始切割到结束
arr.slice(起始索引值,结束索引值);//包含起始索引元素,不包含结束索引元素
arr.splice(起始索引值);
arr.splice(起始索引值,切割长度);
arr.splice(起始索引值,0,插入元素);//插入
arr.splice(起始索引值,替换个数,和替换个数相同个数的元素);//替换
7.数组实战
问题1
声明一个函数rev(arr,n),传参
【1,2,3,4,5】1 返回数组【5,1,2,3,4】
【1,2,3,4,5】2 返回数组【4,5,1,2,3】
function rev(arr,n){
arr2 =arr.slice(arr.length-n);
arr3 = arr2.unshift(arr2);
return arr3;
}
注:或者考虑尾删头增次数,用for循环
问题2
封装一个函数Max(arr),返回数组中最大的数值。
function Max(arr){
var note = arr[0];
for(var i=0;i<arr.length;i++){
if(note<arr[i]){
note=arr[i];
}
}
return note;
}
问题3
封装一个函数uniq(arr),可将数组重复元素删除
function uniq(arr){
var result=[];
for(var i=0;i<arr.length;i++){
if(result.indexOf(arr[i])==-1){
result.push(arr[i]);
}
}
return result;
}
三、字符串
1.length属性
获取字符串的字符个数
2.toLowerCase、toupperCase英文大小写转换
返回一个新的字符串,对原字符串无影响。
str.toLowerCase()
3.split、search
search:获取字符串第一个符合某个字符的索引值
split:将字符串通过某一个字符分割为一个数组。
var str=“我是大美女”;
str.split("美");//[“我是大”,“女”]
str.split("");//【“我”,“是”,“大”,“美”,“女”】
str.search("美");//3
4.substring、sunstr方法
substring:在父串中切割出一个子串,对父字符串无影响【和slice类似】
substr:作用相同【和splice类似】
var str=“我是大美女”;
str.substring(2,3);//从下表2切割到3,包含起始
str.substr(2,2);//从2下标切割出两个元素=>大美
5.replace、match方法
replace:替换某个符合条件的字符,返回新字符串。
match:匹配第一个符合条件的字符,返回一个数组
var str=“我是大美女”;
str.replace("美女","帅哥");//帅哥替换美女
str.match("美女");//
6字符串实战
练习一:字符串倒置
声明一个函数rev(str),将字符串倒置。
//1.倒置返回
function rev(str){
var result= "";
for(var i=str.length-1;i>=0;i--){
result+=str[i];
}
return result;
}
//2.将字符串转换为数组
function rev(str){
var arr=str.split("");//字符串分割为数组
arr.reverse();//倒置
var result=arr.join("");//数组拼接为字符串
return result;
}
练习二:大小写转换
封装函数changeString(str),进行大小写转换
function changeString(str){
var result="";
for(var i=0;i<str.length;i++){
if(str[i]<"a"){
result += str[i].toLowerCase();
}else{
result += str[i].toUpperCase();
}
}
return result;
}
练习三:英文首字母转换为大写
设计函数fun(str)将每个英文单词的首字母转换为大写
function fun(str){
var result="";
var arr=str.split( );获取每一个英文单词
for(var i=0;i<arr.length;i++){//循环遍历数组
result+=arr[i][0].toUpperCase()+arr[i].substr(1)+" ";
}
return result;
}
四、JSON数据格式
JavaScript Object Nonation
有一个大花括号表示,是一种应用类型数据。
作用:
1.前后端交换数据
2.通过键值对存储、读取、修改、添加数据
语法格式:
//存储数据
var info = {
"key1":"value1",
"key2":value2,//值可用任意数据类型
}
//读取数据
info.key1;//点语法
info.key2;
info["key1"];//枚举法
//修改数据
info.key1 = 'balbabala';
info["key1"] = 'balbabala';
//添加数据
info.sex = "man";//没有这个方法则添加,有则修改
info["sex"] = "woman";
五、正则表达式
regular expression 简称RegExp。
匹配字符串的一种墨石,书写在定界符/…/之间,属于引用类型数据(object)
正则可以与字符串方法结合使用。
名称 | 意义 |
---|---|
+ | 量词,选择多个相同元素,连续匹配多次,如:/a+/选择多个a |
* | 量词,匹配数据出现任意次 |
? | 量词,匹配数据出现0次或1 |
{n} | 量词,匹配数据连续出现n次,如:/a{3}/选择3个a |
{n,m} | 量词,匹配数据出现最少n次,至多m次 |
{n,} | 量词,匹配数据出现最少n次 |
g | 修饰符,全局寻找,放在/…/后,如/aaa/g。 |
i | 修饰符,忽略英文大小写,放在/…/后,如/aaa/i。 |
\s | 表示空格 |
\S | 表示非空的字符 |
\d | 表示0-9间的数字 |
\D | 表示非0-9的数字 |
\w | 表示匹配任意字母、数字、下划线 |
[] | 简单字符集,表示或者,如[ab]:匹配a或者b |
[0-9] [A-Z][a-z] | 范围字符集,表示范围,仅能匹配一个字符,/[0-9]+/可匹配多个 |
[0-9A-Z] | 组合字符集,表示组合范围,仅能匹配一个字符,/[0-9a-z]+/g可全局匹配多个 |
^ | 边界符,在前定界符后,表示字符串以^后面内容开头,如/^web/.test(str) 检测是否以web开头 |
$ | 边界符,在后定界符前,字符串是否是以 前 面 内 容 作 为 结 尾 , 如 ‘ / j s x 前面内容作为结尾,如`/jsx 前面内容作为结尾,如‘/jsx/.test(str)` |
() | 利用()分组,进行整体操作 |
[\u4e00-\u9fa5] | 固定字符集,匹配一个汉字 |
exec方法
在目标字符串中进行一次匹配。
var str="aaaabbbcbabc";
var reg=/abc/;//声明变量:储存正则表达式
reg.exec(str);
test方法
正则表达式是否出现在目标字符串,是返回true否则返回false。