cari

Rumah  >  Soal Jawab  >  teks badan

javascript - masalah skop js?

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_u1582phpcn_u15822718 hari yang lalu654

membalas semua(4)saya akan balas

  • 扔个三星炸死你

    扔个三星炸死你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.

    balas
    0
  • 阿神

    阿神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.

    balas
    0
  • 欧阳克

    欧阳克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在自执行函数那里没有获取到返回值

    balas
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:52:34

    balas
    0
  • Batalbalas