javascript - masalah skop js?
phpcn_u1582
phpcn_u1582 2017-06-26 10:50:34
0
4
740
var b = 10;
(function b(){
    b = 20;
    console.log(b);
})();

Kenapa result keluarkan fungsi saya pun nak tanya sama ada bfungsi dalam kurung ada promosi fungsi

phpcn_u1582
phpcn_u1582

membalas semua(4)
扔个三星炸死你

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.

阿神

@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.

学霸

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在自执行函数那里没有获取到返回值
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan