函数

     函数

功能:可以实现一定的功能(封装)

 

创建函数的方式:

1、字面量创建

function 函数名 (参数) {代码块/函数体}

* 不管参数多少个,实参必须要和形参保持一致性

 

函数的调用: 函数名();

* 函数名不要大写字母,大写就是构造函数

返回值: return "返回的数据";

* return有值就返回值,没有就始终返回undefined

 

function f68(){

// console.log("liqiang");

// // return ;

// }

// console.log(f68); //没有小括号输出的是函数体

// console.log(f68()); //先调用函数f68(),再输出log

// f68(); //调用函数

 

2、函数/匿名表达式

* let 函数名 = function(){}

 

function后面的name可以不写

* function和let创建函数区别:只是function后面的name打印不一样

*/

// let f69 = function f70() {

// console.log("ccccsshello");

// }

// console.log(f68.name);

// console.log(f69.name);

// console.log(f70());

// f69();

 

3、构造函数

* let 函数名 = new Function();

// let f70 = new Function(

// console.log("helloworld");

// // ,console.log("cqs");

// );

// f70();

 

参数: 形参/实参

函数只有加了参数才能千变万化

* 实参: 实际参数,用户输入的值(调用时传的参数)

* 形参: 形式参数,接收实际的值(声明时的参数)

 

function aa(name,price,type){

let f68 = [name,price,type];

return f68;

}

// console.log(aa);

console.log(aa("11",2,"22"));

// aa();

不定参数

如果实参比形参多,想获取多的参数则用扩展运算符接收

注:只能写在最后一个形参上

 

// function f68(a,b,c,...d){

// console.log(a,b,c); //1,2,3

// console.log("D",d);//[4,5]

判断是不是数组:

// // if(Array.isArray(f68)){

// // console.log("true");

// // }else{

// // console.log("false");

// // }

获取所有的参数:arguments类数组

获取当前函数实参的值,放在外面不行

// console.log(arguments[0]); //1

// console.log(arguments.length); //5

// // arguments.push("A"); arguments不是数组,因此没有push方法

// console.log(arguments);

 

// }

// f68(1,2,3,4,5);

相同形参,取后面的值(相当于又给第二个赋值)

// function f68(a,a,b){

// console.log(a,c); //2,3

// }

// f68(1,2,3);

默认值:书写格式: function 函数名(形参=默认值){}

//有值就用实参的值,没有就用形参赋的值(默认值只存在形参上)

function f68(a,b){

console.log(a+b); //nan

}

f68();

function f68(a=1,b=2){

console.log(a+b); //5

}

f68(2,3);

 

属性:.length

函数名.length获取形参的个数(不包含不定参数)

在计算的过程中如果碰到形参的默认值就不执行

// function f68(a, b, c) {

// console.log(f68.length); //f68(); 3; f68(1,2); 3

// }

// f68();

// function f68(a=2, b, c,...d) {

// console.log(f68.length); //c=2 2; a=2 0

// }

// f68(1,2);

 

 

箭头函数

格式1:省略function

// 函数名 箭头 函数体(如果只有一条不加大括号)

// f68 => console.log("f68");

// let f69 = f68 => console.log("f68");

// f69();

格式2: 省略函数名

// 形参 箭头 函数体(如果只有一条不加大括号,这是一条返回语句,不需要加return)

// (a,b) => a+b

// let f69 = (a, b) => a + b;

// console.log(f69(1, 2)); //3

格式3: 省略function和函数名

// 形参(形参如果只有一个,可以不加小括号) 箭头 函数体

// a => a+1;

// let f69 = a => a + 1;

// console.log(f69(2)); //3

 

回调函数

//把一个函数A当做参数传给另一个函数B使用,则A是回调函数

下面的方法是数组的方法,里面要传一个函数

方法1:.sort 排序

:a-b就是升序,b-a降序

// let f68 = [8, 6, 7, 2, 5, 3, 1];

// // console.log(f68.reverse());

// // let f69= f68.sort();

// let f69 = f68.sort((a, b) => a - b);

// console.log(f69);

 

方法2: 数组名.every

数组名.every(参数=>条件)

//功能:如果数组的每个值都满足条件,返回true,有一个不满足就返回false

// let f68 = [8, 6, 7, 2, 5, 3, 4];

// let f70 = [2,4,6,8];

// let f69 = f68.every(index => index % 2 == 0);

// console.log(f69); //false

// let f69 = f70.every(index => index % 2 == 0);

// console.log(f69); //true

 

方法3: 数组名.some

数组名.some(参数=>条件)

//功能:如果数组中有一个值满足条件,返回true,所有值都不满足才返回false

// let f70 = [1,3,5,7];

// let f69 = f70.some(index => index % 2 == 1);

// console.log(f69); //true

 

方法4: 数组名.filter

筛选/过滤(即返回满足条件的值)数组名.filter(参数=>条件)

// let f68 = [8, 6, 7, 2, 5, 3, 4];

// let f69 = f68.filter(index => index % 2 == 0);

// console.log(f69); //true

 

方法5: 数组名.map

数组名.map(参数=>条件)

返回一个新数组,数组里的内容是原数组的每个值是否满足条件

// let f68 = [8, 6, 7, 2, 5, 3, 4];

// let f69 = f68.map(index => index % 2 == 0);

// console.log(f69); //true

 

方法6: 数组名.forEach

对数组中的每个值,进行操作 数组名.forEach(参数=>条件)

// 该方法没有返回值,即返回undefined

// let f68 = [8, 6, 7, 2, 5, 3, 4];

// f68.forEach(item=>console.log("F68:"+item));

// let f69 = f68.forEach(item=>console.log("F68:"+item));

// console.log(f69);

 

map和forEach的区别?

map有返回值,forEach没有返回值

// let f68 = [8, 6, 7, 2, 5, 3, 4];

// let f69 = f68.forEach(item=>item+1);

// // let f69 = f68.map(item=>item+1);

// console.log(f69);

 

IIFE:立即执行函数

创建即调用,调用后即销毁,不占用内存,只执行一次

// (function f68() {

// console.log(lq);

// })();

// (function f68() {

// console.log(lq);

// }());

 

 

交集、并集、差集

let set1 = new Set([1,2,3,2]);

let set2 = new Set([3,4,5]);

//交集 3

// let intersect = [...set1].filter(item => set2.has(item));

// console.log(intersect);

//差集 1,2

// let intersect = [...set1].filter(item => !set2.has(item));

// console.log(intersect);

//并集 1,2,3,4,5

let union = new Set([...set1,...set2]);

console.log(union);

原文地址:https://www.cnblogs.com/liqiang95950523/p/13263797.html