0407

函数的嵌套

 

 

 

知识点补充:

   逻辑短路:如果第一个条件已经能够决定整个表达式的结果,那么第二部分就不执行

            && 第一个条件为false的时候短路

     || 第一个条件为true的时候短路

 

例如:

      var a = 10
      var b = 0
      a > 10 && b === 0
      a>10   //false,
//所以整个表达式结果已经false了,所以后面b===0
//这个条件就不会再去判断了

              a > 0 || b === 0

//当第一个条件为true的时候,整个表达式已经是true了,所以
//第二个条件就不会再去判断了

 

   三元运算符:也被称为三目运算。

             var a = 10

              a++ //一元

              a + 2 //二元

       //判断条件  ?  条件成立的时候执行的代码 : 不成立的代码

       例:a > 0 ? console.log(‘大于0’) : console.log(‘小于0’)

           或者console.log(a > 0 ? ‘大于0’ : ‘小于0’ )

   语句块的大括号:

      语句块:if、switch、while、for、(function)

       常用语句块里代码如果只有一行,那么大括号可以省略

       一般if else、 for有些时候

       例:var a = 10

           if(a > 0)console.log(‘大于0’);

 

 

递归:函数自身的调用,但不能无限调用,得有出口(自己调用自己)

构成递归需具备的条件

    1. 子问题须与原始问题为同样的事,且更为简单;

    2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

由于递归是函数本身一层一层压栈,导致先入栈的不能出栈,空间占满以后就会造成堆栈溢。

   匿名函数:没有名字的函数

      例:

function () {

             console.log(123)

}

var test = function () {

                 console.log(123)

}

div.onclick = function () {

                 console.log(123)

}

 

    IIFE:自调用函数

         封装一个函数的同时立马自己调用

         写IIFE的时候如果前面的代码没有分号,

那么需要在IIFE前面加上一个分号

例:

;(function () { console.log(123)})()

 

         优点,减少全局变量。节约内存空间

JS运行和编译

语法分析

            查找基本语法有没有错误

预解析

            执行之前进行预解析

 var、function关键字提前到当前作用域的顶部,变量默认值为undefined,函数默认值为函数体代码块,

当函数与变量重名时,保留函数。

解释执行

       变量提升:

例:

//把var声明的变量提升到当前作用域的顶部,只提升声明,不提升赋值
           console.log(a)
    var a = 10

   //        上面两行代码完成变量提升之后相当于下面这三行

           var a

           console.log(a)

           a = 10

      // 变量提升是提升到当前作用域的顶部

变量提升是提升到当前作用域的顶部

    函数的提升:function关键字声明的函数会提升整个函数体到当前作用域的顶部

 

事件:

   常用的鼠标事件

      click 鼠标点击

       dbclick  鼠标点击两次触发的事件

       mousedown 鼠标按下时显示的事件

       mouseup   鼠标抬起时显示的事件

        mouseout      鼠标移入时显示的事件

  mouseover     鼠标离开时显示的事件

  out和over这一对在盒子的子元素之间穿过的时候也会反复触发,而enter和leave只在进出盒子时触发一次

       mouseenter    鼠标进入时显示的事件

       mouseleave    鼠标离开时显示的事件

       mousemove     每动一次都会触发一次move

版权声明:本文为52580587zl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/52580587zl/p/12661447.html