Js学习3

一、函数

一般函数 :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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值