Tiga cara untuk mencipta fungsi dalam JS dan perbezaannya

PHPz
Lepaskan: 2018-10-15 14:06:57
asal
1455 orang telah melayarinya

1. Pengisytiharan fungsi

function sum1(n1,n2){
    return n1+n2;
  };
Salin selepas log masuk

2 Ungkapan fungsi, juga dipanggil fungsi literal

var sum2=function(n1,n2){
    return n1+n2;
};
Salin selepas log masuk

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
Salin selepas log masuk

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();
Salin selepas log masuk

3. Kaedah pembinaan fungsi, parameter mesti dipetik

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

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
Salin selepas log masuk

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan