JS高程7.函數運算式(1)

來源:互聯網
上載者:User

標籤:cee   style   常見   console   enc   erro   返回   code   name   

定義函數的兩種常見的方法:

1 . 函式宣告

2. 函數運算式

# 差異

(1)函式宣告 ,具有函式宣告提升的特徵。

(2)函式宣告的函數的name屬性為函數的名稱;使用函數運算式定義的函數在ES5中,name屬性為空白字串,在ES6中為函數的名稱。

 #  函式宣告提升

  函式宣告

1 sayHello();//在函式宣告之前調用函數不會報錯,因為函式宣告提升。2 function sayHello(){3     console.log("Hello!");//Hello!4     console.log(sayHello.name);//sayHello5 }

  函數運算式

1 sayHello();// TypeError: sayHello is not a function  使用函數運算式的方法定義函數,在變數聲明函數之前調用函數會報錯。2 var sayHello = function (){3     console.log("Hello!");//Hello!4     console.log(sayHello.name);//sayHello。注意:在ES5中,匿名函數的name屬性是Null 字元串(P176),在ES6中返回這個具名函數原本的名字。5 }6 sayHello();//在這裡調用不會報錯。  

# 注意以下這種情況

 

 1 //不要這樣做。由於函式宣告提升的原因,以下代碼在ECMAScript中屬於無效文法,瀏覽器嘗試修正的錯誤的做法不一致。P176 2  var flag = true; 3  if(flag){ 4      function sayHi(){ 5          console.log("Hi"); 6      } 7  }else{ 8      function sayHi(){ 9          console.log("Yo");10      }11  }12  sayHi();//strict 模式下會報錯。 ReferenceError: sayHi is not defined

 

 

 1 //可以這樣做,使用函數運算式。 2  var flag = true; 3  var sayHi; 4  if(flag){ 5      sayHi = function(){ 6          console.log("Hi"); 7      } 8  }else{ 9      sayHi = function(){10          console.log("Yo");11      }12  }13  sayHi();

 

JS高程7.函數運算式(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.