Rumah  >  Artikel  >  hujung hadapan web  >  Analisis terperinci tentang kemahiran definisi_javascript fungsi JavaScript

Analisis terperinci tentang kemahiran definisi_javascript fungsi JavaScript

WBOY
WBOYasal
2016-05-16 15:50:041011semak imbas

Fungsi

Beberapa perkara penting:

a). Fungsi ialah warga kelas pertama dalam JavaScript (kepentingan)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          . c). Fungsi mentakrifkan skop pembolehubah bebas

Kaedah definisi

a) Fungsi bernama:

Fungsi yang dinamakan adalah global melainkan ditakrifkan di dalam fungsi lain.

      // 全局的命名函数
  function add(x, y) {
    return x + y;
  }
  console.info(add(100, 200));  //300

b) Fungsi tanpa nama:

Fungsi tanpa nama biasanya diberikan kepada pembolehubah dan kemudian dipanggil melalui pembolehubah.

    var func = function (x, y) {
      return x + y;
    }
    console.info(func(5, 2)); //7
Fungsi tanpa nama sesuai untuk situasi "fungsi tanpa nama yang dilaksanakan serta-merta" berikut:

    console.info(
      function (x, y) {
            return x + y;
          }(100, 200)  //立即调用
        );
C) Kaedah definisi mempengaruhi kesan pelaksanaan kod

Fungsi yang dinamakan boleh digunakan dahulu dan kemudian ditakrifkan

    console.info(sum(10, 10));
    function sum(num1, num2) {
      return num1 + num2;
    }
Fungsi tanpa nama mesti ditakrifkan terlebih dahulu sebelum menggunakan

    //console.info(sumFunc(10, 10));  //Uncaught TypeError: Property 'sumFunc' of object [object Object] is not a function 
    var sumFunc = function (num1, num2) {
      return num1 + num2;
    };
    console.info(sumFunc(10, 10));


Nilai pulangan fungsi:

Gunakan pulangan untuk menjana nilai pulangan Jika tiada pulangan, fungsi itu kembali tidak ditentukan

 function func() {
 }
 console.info(func()); //undefined
 function func2() {
   return; //空的返回语句
 }
 console.info(func2()); //undefined

Lubang tersembunyi di balik:

 var func = function (x, y) {
   var sum = x + y;
   return {
     value : sum
   }
 }

Tiada masalah dalam penulisan seperti ini: memanggil func(5,5) mengembalikan Objek {nilai: 10}

Walau bagaimanapun:

  var func = function (x, y) {
    var sum = x + y;
    return
    {
      value: sum
    };
  }
  console.info(func(5,5)); //undefined

Jika pemulangan diikuti dengan pemulangan gerabak dan pertukaran baris,

Memanggil func(5,5) memaparkan undefined
Editor menambah koma bertitik selepas pemulangan untuk kami bagaimanapun, ia tidak berguna dalam kes ini.

Fungsi ialah objek:

  function add(x, y) {
    return x + y;
  }
  console.info(add(100, 200)); //300
  var other = add; //other和add引用同一函数对象
  console.info(other(300, 400)); //700
  console.info(typeof other);  //function
  console.info(add === other); //true

Fungsi yang ditakrifkan bersarang:

Dalam fungsi, anda boleh menentukan fungsi lain.

  function outerFunc(a, b) {
    function innerFunc(x) {
      return x * x;
    }
    return Math.sqrt(innerFunc(a) + innerFunc(b));
  }
  console.info(outerFunc(3, 4)); //5

Akses pembolehubah luaran:

Fungsi dalaman boleh mengakses pembolehubah dan parameter luaran.

 var globalStr = 'globalStr';
 function outerFunc2(argu) {
   var localVar = 100;
   function innerFunc2() {
     localVar++;
     console.info(argu + ":" + localVar + ":" + globalStr);
   }
   innerFunc2(); //hello:101:globalStr
 }
 outerFunc2("hello");

Fungsi yang mengembalikan fungsi:

Kerana fungsi adalah objek, ia boleh digunakan sebagai nilai pulangan.

  function outerFunc(x) {
    var y = 100;
    return function innerFunc() {
      console.info(x + y);
    }
  }
  outerFunc(10)(); //110
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

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