Rumah > hujung hadapan web > tutorial js > Bagaimanakah Perisytiharan Fungsi Berkelakuan Dalam Pernyataan if/else dalam JavaScript?

Bagaimanakah Perisytiharan Fungsi Berkelakuan Dalam Pernyataan if/else dalam JavaScript?

Linda Hamilton
Lepaskan: 2024-11-03 01:58:03
asal
419 orang telah melayarinya

How Do Function Declarations Behave Within if/else Statements in JavaScript?

Pengisytiharan Fungsi Dalam Pernyataan if/else

Apabila pengisytiharan fungsi ditemui dalam penyataan if/else, pengendaliannya boleh berbeza-beza bergantung pada JavaScript persekitaran. Dalam coretan kod yang disediakan, pengisytiharan fungsi ditakrifkan di dalam setiap cawangan if/else:

var abc = '';
if (1 === 0) {
  function a() {
    abc = 7;
  }
} else if ('a' === 'a') {
  function a() {
    abc = 19;
  }
} else if ('foo' === 'bar') {
  function a() {
    abc = 'foo';
  }
}
a();
document.write(abc); // Expected output: foo
Salin selepas log masuk

Di bawah ECMAScript 5 (ES5), dalam mod tidak ketat, kod di atas menunjukkan tingkah laku yang tidak dapat diramalkan. Penyemak imbas dan enjin yang berbeza mengendalikan pengisytiharan fungsi dalam blok secara berbeza.

Walau bagaimanapun, dalam ECMAScript 2015 (ES2015) dan kemudian, pengisytiharan fungsi dibenarkan dalam blok. Pengisytiharan fungsi dalam blok tersebut diskop kepada blok. Dalam coretan kod, fungsi a diisytiharkan dalam blok if paling dalam. Akibatnya, ia tidak ditentukan dalam skop global, yang membawa kepada ralat fungsi yang tidak ditentukan:

if ('foo' === 'bar') {
  function a() {
    abc = 'foo';
  }
}
a(); // Error: a is not defined
Salin selepas log masuk

Untuk definisi fungsi bersyarat, adalah disyorkan untuk menggunakan ungkapan fungsi dan bukannya pengisytiharan:

var a = 'foo' === 'bar' ? function() {
  abc = 'foo';
} : function() {
  abc = 19;
};
a();
document.write(abc); // Expected output: 19
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Perisytiharan Fungsi Berkelakuan Dalam Pernyataan if/else dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan