函数

创建函数方式

  • 方式一 function 关键字创建 具名函数
    // foo 叫做 函数名
    // ()里边填写函数的 参数

      function foo(){
          console.log('我是一个foo函数');
      }
    
  • 方式二 匿名函数表达式

>     var bar = function (){
>             console.log('我是一个匿名函数');
>         }
  • 方式三 自执行函数(立即执行函数)
    前面加分号用来和上面隔离开。
    ; (function(){
    console.log(‘我是一个自执行函数’);
    })()
    创建函数后紧跟括号写参数内容,仅调用一次,之后找不到名字无法再使用。

函数返回值

不写返回值,默认是undefined;
只能return一个值,如果要返回多值,需要包装成数组。
return代表结束,之后的语句不再执行。

作用域

作用域 就是变量可以作用的范围(生效的范围)

  • 全局作用域 (挂载在window对象上,页面的任何地方都可以使用)
  • 局部变量 (只能在自身作用域中使用) 在函数作用域内声明的变量
  • 不用var 时,声明的变量默认是个全局变量(严格模式下报错)

作用域链

  • 作用域互相嵌套,存在包含关系
  • 作用域链:作用域的上下级关系
  • 查找变量的规则:使用变量,先在自身查找,找不到往上一级查找。

声明提升和预解析

  console.log(a); // undefined 涉及到了声明提升
  var a = 100;
————————————————————真实顺序————————————————————————
        // var a;
        // console.log(a);
        // a = 100;
  • 提升的仅仅是声明动作,赋值动作不会提升。
  • 函数声明也存在提升
  • 预解析阶段,会把所有用function 关键字声明的具名函数,提升到作用域最顶部。
say();
function say(){
    console.log('hello');
}
  • 匿名函数表达式
  foo(); // foo is not a function
    var foo = function(){
        console.log('你好');
    }
    // 真实顺序
    // var foo;
    // foo();
    // foo = function(){}
    

递归 深度遍历

// 遍历数组
// 深度遍历
var arr = [1, [10,[101,102,103],12], 3, 4, [21,22,23], 6, [31,32,33], 8, 9];

 function traArr(arr){
            for(var i = 0;i<arr.length;i++){

                // 递归思想,调用自己
                if(arr[i] instanceof Array){
                    traArr(arr[i])
                }else{
                    console.log(arr[i]);
                }
                
            }
        }

        traArr(arr)
  • x的y次方 === x的y-1次方 * x
 function pow(x, y) {
        if(y===1){
            return x;
        }
        return pow(x, y - 1) * x;
    }

    // pow(2,4) ====>  pow(2,3) *2 ===> 
      pow(2,2)*2 *2 ==> pow(2,1)*2 *2*2 ===> 2*2 *2*2
    // 不喊停,递归就会一直递归下去
    // 能有一个准确值的时候就可以停下 递归了
    console.log(pow(3,4));

不死神兔需要看一下呜呜呜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值