Rumah > Soal Jawab > teks badan
var b = 10;
(function b(){
b = 20;
console.log(b);
})();
Kenapa result keluarkan fungsi saya pun nak tanya sama ada b
fungsi dalam kurung ada promosi fungsi
扔个三星炸死你2017-06-26 10:52:34
Nama fungsi dalam ungkapan fungsi tidak boleh diubah dan hanya boleh dipetik dan tidak boleh diberikan. Jika anda menambah 'use strict'
anda boleh melihat ralat dalam mod ketat.
阿神2017-06-26 10:52:34
@Kod cepat kekunci ringan 10 memerlukan koma bertitik selepasnya
Tiada promosi fungsi di sini Promosi fungsi hanya wujud dalam kes "pengisytiharan fungsi", bukan dalam kes "ungkapan fungsi".
Mengenai perbezaan antara "pengisytiharan fungsi" dan "ungkapan fungsi", banyak artikel di Internet menerangkannya dengan sangat jelas. Anda boleh mencari dan belajar sendiri.
欧阳克2017-06-26 10:52:34
Apa yang dikatakan oleh tingkat dua ialah tidak boleh mengubah suai nama fungsi dalam fungsi, contohnya:
(function a(){
a = 10; //这个表达式不会成功,函数a依旧是函数a,至于这里面的a = 10等同于被废弃了,也不会生成相应的全局变量
})();
Mengapa fungsi a adalah output dan bukannya 20, perkara mudahnya ialah pernyataan itu dilangkau terus, yang bersamaan dengan
var b = 10;
(function b(){
console.log(b);
})();
Supplement:
Saya baru diingatkan bahawa fungsi laksana sendiri juga adalah ungkapan fungsi. Saya minta maaf kerana mengelirukan anda apabila saya mula menulis jawapan.
var b = 10;
var b = (function(){
b = 10;
console.log(b); //输出:10
})();
console.log(b); //输出:undefined 。 b在自执行函数那里没有获取到返回值