Rumah >hujung hadapan web >tutorial js >Tiga cara untuk mencipta fungsi dalam JS dan perbezaannya

Tiga cara untuk mencipta fungsi dalam JS dan perbezaannya

PHPz
PHPzasal
2016-05-16 15:10:451482semak imbas

1. Pengisytiharan fungsi

function sum1(n1,n2){
    return n1+n2;
  };

2 Ungkapan fungsi, juga dipanggil fungsi literal

var sum2=function(n1,n2){
    return n1+n2;
};

Kedua-duanya Perbezaannya: penghurai akan membaca pengisytiharan fungsi terlebih dahulu dan menjadikannya boleh diakses sebelum melaksanakan sebarang kod manakala ungkapan fungsi mesti menunggu sehingga penghurai mencapai baris kod di mana ia terletak sebelum ia benar-benar ditafsirkan dan dilaksanakan.

Tegasnya, fungsi laksana sendiri juga dipanggil ungkapan fungsi Ia digunakan terutamanya untuk mencipta skop baharu daripadanya Ia wujud sebagai fungsi tanpa nama dan dilaksanakan secara automatik serta-merta.

(function(n1,n2){
    console.log (n1+n2)
})(1,3);//4

Beberapa fungsi laksana sendiri yang lain:

  //可用来传参
  (function(x,y){
    console.log(x+y);
  })(2,3);

  //带返回值
  var sum=(function(x,y){
    return x+y;
  })(2,3);
  console.log(sum);

  ~function(){
    var name='~'
    console.log(name);
  }();

  !function(){
    var name='!'
    console.log(name);
  }();

  ;(function(){
    var name=';'
    console.log(name);
  })();

  -function(){
    var name='-'
    console.log(name);
  }();

  //逗号运算符
  1,function(){
    var name=',';
    console.log(name);
  }();

  //异或
  1^function(){
    var name='^';
    console.log(name);
  }();

  //比较运算符
  1>function(){
    var name='>';
    console.log(name);
  }();

  ~+-!(function(){
    var name='~+-!';
    console.log(name);
  })();

  ~!(function(){
    var name='~!';
    console.log(name);
  })();

  (function(){
    var name='call';
    console.log(name);
  }).call();

  (function(){
    var name='apply';
    console.log(name);
  }).apply();

3. Kaedah pembinaan fungsi, parameter mesti dipetik

var sum3=new Function('n1','n2','return n1+n2');
console.log(sum3(2,3));//5

Secara teknikal, ini ialah ungkapan fungsi. Secara amnya tidak disyorkan untuk mentakrifkan fungsi dengan cara ini, kerana sintaks ini akan menyebabkan kod dihuraikan dua kali (kali pertama ialah menghuraikan kod ECMAScript biasa, dan kali kedua ialah menghuraikan rentetan yang dihantar ke pembina), sekali gus menjejaskan prestasi.

var name='haoxl';
  function fun(){
    var name='lili';
    return new Function('return name');//不能获取局部变量
  }
 console.log(fun()());//haoxl

Pembina Function() akan menghuraikan badan fungsi dan mencipta objek fungsi baharu setiap kali ia dilaksanakan, jadi apabila memanggil Function dalam gelung atau fungsi yang kerap dilaksanakan () kecekapan pembina adalah sangat rendah. Literal fungsi tidak disusun semula setiap kali ia ditemui Apabila mencipta fungsi menggunakan pembina Function(), ia tidak mengikut skop biasa Ia sentiasa melaksanakannya sebagai fungsi peringkat atas.

【Tutorial berkaitan yang disyorkan】

1 Tutorial video JavaScript
2 Manual dalam talian JavaScript
3 tutorial bootstrap

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn