js中函數的寫法


js提供了靈活的函數寫法,我們常見的函數寫法和調用可能是:

function ask(){
  console.log(1);
}
ask();

這樣就完成了函數的定義和調用,司空見慣。

還有js里面的匿名函數我們也不陌生,匿名函數的定義和調用:

1 (function(){console.log(1)})();
2 (function(){console.log(1)}()):

我們看到匿名函數定義之后立即就被引用了,這其實是立即執行的函數表達式,例如

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

(function....)這里是一個表達式,然后(function)();這是調用它

而下面的類似,只不過是最后一步計算表達式,但是我們要注意

function(){console.log()}();//error

這種寫法是錯誤的因為匿名函數沒有名字,只有內存地址,而這樣調用是有名字的調用,第一種情況其實是就算了之后(表達式)然后調用的。

 

還有就是函數表達式,函數表達式也很常見:

 1 var a=function(){console.log()} 2 a(); 

這其實也是先把函數的地址給a,這樣這個匿名函數就變成有名的了,名字就是a,然后a();調用,這就是所謂的函數表達式,當然,我們寫成這種:

 1 var a=function(){console.log(1);}()   

 

也是可以的,但這個時候,我們用a();來調用就不行了,因為a這個時候代表的不是函數名,這種方法其實類似於匿名函數的第二個調用方法,是表達式。

 

 

最后附一個小的知識點

var a=[];
var x=2;
a.push(x);
console.log(a[0]);
var x=3;
console.log(a[0]);
 


這表明push,push的是變量的值而不是變量的地址,所以數組里放的變量的副本,而不是地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM