zoukankan      html  css  js  c++  java
  • 函数

         函数

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

     

    创建函数的方式:

    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);

  • 相关阅读:
    GirdView实现折叠式效果
    asp.net MVC出错解决
    C#如何实现从内存中加载程序集
    从线程池看《操作系统》专业课的作用【转自杨中科学生大本营】
    JavaScript的10个非常有用的方法【转】
    JQuery最佳实践:JQuery自定义事件的应用
    C#的委托事件在winform窗体中实现传值备忘
    asp.net异步获取datatable并显示
    ASP.NET 请求处理流程【转】
    温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值
  • 原文地址:https://www.cnblogs.com/liqiang95950523/p/13263797.html
Copyright © 2011-2022 走看看