js-函数

一、函数的介绍

js函数语法 :function 函数名(){}

1、function 是预定义 函数名是自定义的 ,函数名的定义规则符合 变量的定义规则

2、数字(在后面) 字母 下划线 $ 符号 组成,定义一个函数名为fn的函数,这个函数可以理解成是一个箱子可以装代码,代码会被装在 大括号里面,装起来之后是代码是不会执行的。

二、函数的调用
1、例如function fn(){}; 可以在函数外面直接调用fn();fn()中的函数执行一遍

2、函数之间也可以调用

    function fn1(){
            console.log(111);
            fn2();
        }
        function fn2(){
            console.log(222);
        }
        fn1();//输出结果是111 222
复制代码

3、函数的事件调取

1.通过标签.onclick = 未执行的函数 (匿名函数)

2.通过行间的onclick属性 执行函数 ,注意需要小括号 (可以传参数)

  <button id="btn" onclick="fn(1,2)">按钮</button>//
    //第一种
    btn.onclick = function(){
          console.log("函数执行了");
        }
        
    //第二种
  function fn(a,b){

            console.log("fn",a,b);

        }

        // var fn = function(){

        //     console.log("fn");

        // }

        // btn.onclick = fn;  //当点击按钮的时候执行  fn函数;
复制代码

三、定义函数的方式
1、声明型,函数的调用可以再定义之前 也可以在定义之后

函数定义方式一:命名函数(声明式)

function fn(){  

            console.log(1111);

        }
复制代码

2、赋值型,赋值式函数的调用只能在函数定义之后调用,如果在函数定义之前调用那么就会报错

函数定义的第二种方式: 匿名函数(赋值式)

var fn = function(){  

            console.log(123);

        }
复制代码

四、函数的参数

形参、实参、隐藏参数,参数可以写多个,并且是一一对应的关系

function fn(a){  //a是形参

            console.log(a);

        }
        fn(1);//1是实参
复制代码

隐藏参数:

 // 隐藏参数 : 处理不定参数问题 ;

        function fn(){  //一个形参都不写 

                // 在 js函数里会提供一个隐藏参数 会把所有传入的参数当成伪数组(长的像数组,使用上有点区别 ,我们在这就可以简单理解成是数组)

                // 隐藏参数是预定义的 arguments 

                console.log(arguments.length);  //是隐藏参数

        }

        // fn函数调用的时候 实参 可以有2个参数传入 也可能有三个传入还有可能有很多个参数传入,

        // fn(1);

        fn(1,'hello');

        fn(1,2,3);

        fn(1,2,3,4,5);


        // 总结:arguments 是隐藏参数 ,会把传入的实参放在伪数组里 ; 一般是处理不定参的问题

        // 如果不是不定参的问题 不建议频繁使用arguments (可读性差)
复制代码

数组:

        var array=[1,2,3]//1是该数组的第0个键值,2是第1位,3是第二位,
        //3也可以用数组的长度减1获取
        console.log(array.length);//获取数组长度
复制代码

数组的循环:

        var array=[1,2,3];
        for(i=0;i<array.length;i++){//从0开始循环,判断条件小于数组长度
            console.log(array[i])
        }
复制代码

字符串数组:

    var str="abc123";
        var newStr="";
        var str0=str[0];
        var strLast=str.length-1;
        for(i=0;i<str.length;i++){
            if(i!=0&&i!=str.length-1){
                newStr+=str[i]
            }
        }
        console.log("原来的字符串"+str);
        console.log("新的字符串"+newStr);
复制代码

函数return的使用:
1.阻止函数中后续代码的执行(函数里return之后的代码没有任何意义) 2. 返还函数里的值

    function fn(a){
           console.log(a);
           return a;//可以返回任何类型
       }
       fn(1);
复制代码

函数的优点:1. 封装 (把函数保存起来) 2.复用 3.延迟执行 ;

变量提升与函数提升:

1.变量提升只会提升变量名的声明,而不会提升变量的赋值初始化。

2.函数提升的优先级大于变量提升的优先级,即函数提升在变量提升之上。

 console.log(a);  // a 是啥? 1. undefined 2.报错

        // 结果是 undefined  有点不符合逻辑

        if(false){

            var a = 10;

        }
复制代码

五、函数的作用域:
全局作用域:自己定义的全局变量 js会把它放在 预定义的全局变量上,js里全局内置的变量是window
局部作用域(函数作用域) :一个函数包裹的区域 ,被称为函数作用域 ,也是局部作用域

    var a=1;//全局作用域
       function fn(){
           var a=2;//局部作用域
           console.log(a);
       }
       fn();//执行a=2;作用域从内到外
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享