es6

一.變量es6

  var function let const class import  定義變量的關鍵字異步

  備註:不能忽略函數的形參    形參(函數的私有變量)函數

  var 定義變量spa

    var 變量提高,可是不能定義,給window添加一個對應的屬性3d

  function對象

    既能夠提早聲明,同時還定義了       定義(就是給這個變量賦值了)blog

  let是es6提供的一種聲明變量的方式
       1.沒有變量提高的功能,在聲明以前不能使用
       2.不能重複聲明
       3.不會給window添加屬性事件

二.做用域內存

  var的做用域作用域

    var聲明的變量,做用域分兩種

    全局做用域

      在window下聲明的變量或者在函數外申明的變量

    局部做用域

      在函數內聲明的

    瞭解預覽器的機制

      預覽器在執行時候,會首先開闢一個大空間叫window,window下面主要分兩個模塊,一個叫棧,一個叫堆,  棧用來存放變量的內存地址    堆主要存放代碼塊     而後預覽器從上到下執行代碼

  function申請的變量 

    function聲明的變量也會給window添加一個屬性,屬性值是方法

    函數歸屬: 函數歸誰,跟調用無關,跟他在哪定義有關

      

    任何函數都有一個返回值,若是寫了return那個return的是什麼就獲得什麼,若是沒有return獲得的是undefined 

      

    函數在if中的特殊狀況

      在if語句中定義的函數,只聲明不定義,當條件成立的時候,if模塊中無論函數在哪聲明的函數,都會第一步對這個函數先定義,在去執行if裏面的代碼

      

三.塊級做用域

  帶{}的都是塊級做用域,if(){}    for(){}     對象{}

  var沒有塊級做用域這個概念   let和const有塊級做用域這個概念

  1.在塊級做用域下  var 和 function 跟在window不同,function有個特殊的,在塊級做用域前指令會提早聲明不會定義

    

 

   2.在塊級做用域下 let 和 const 聲明的變量是私有的,外面訪問不到

    

   3.for 循環下let聲明的變量不會泄露

    

      事件時異步的,for循環結束以後i3而且i仍是是全局的,點擊了li最後alertii此時是3,因此都會彈出3

    

    塊級做用域和對象

      若是{}表示對象,不能放在行首,就是{}前面沒有任何東西,若是有了就是對象。沒有就表明塊級做用域

      eval('({name:"zhangsan",age:23})')

四.暫時性死區

  若是塊級做用域內使用letconst命令聲明變量了,這個區域就會被這個變量強制綁定,凡是在聲明以前這些變量都是不可用的,使用會報錯,這就是暫時性死區。  

   

  暫時性死區場景

    

    使用變量b在定義變量b以前了, 出現了暫時性死區
         let a=a報錯,賦值運算是從左到右,右邊使用變量a結果發現a沒有聲明,而let語法規定不能再沒定義前使用變量,因此報錯
         var a=a;不報錯,由於var能夠變臉提高在等號賦值的時候,是從右到左,使用變量a,此時a是undefined,賦值時就是把undefined賦值給a,因此a仍是undefined

   函數參數默認值

     1. 寫法上 有默認值的寫後面,沒有默認值的寫前面

     2. 若是傳對應的參數,就不要默認值了,不是先賦默認值,而後用實參去覆蓋。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息