Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimana untuk memberikan nilai kepada pembolehubah di luar fungsi di dalam fungsi?


Seperti di atas, g tidak boleh diberikan nilai baharu saya mahu menulis fungsi fn yang boleh menetapkan nilai kepada pembolehubah luaran secara sewenang-wenangnya

.

Keperluan sebenar adalah seperti di atas, saya ingin menetapkan pembolehubah instantiated ke luar

淡淡烟草味淡淡烟草味2709 hari yang lalu2615

membalas semua(5)saya akan balas

  • PHPz

    PHPz2017-05-19 10:41:36

    Konsep yang tidak difahami oleh penyoal ialah masalah bagaimana parameter fungsi diluluskan.

    var g = 1;
    function fn(a){a=2;}
    fn(g);
    g//1 
    //我是分割线
    var g = {a:1};
    function fn(b){b.a=2;}
    fn(g);
    g//{a:2} 

    Apabila pembolehubah luaran dihantar ke dalam fungsi sebagai parameter, anda perlu memahami dua situasi, satu ialah jenis data asas dan satu lagi adalah objek.

    Apabila parameter adalah jenis data asas, parameter dalam fungsi diluluskan mengikut nilai, iaitu, nilai disalin ke parameter Bagaimana fungsi menukar nilai parameter hanyalah perubahan kepada salinan parameter sebenar, yang tidak akan menjejaskan ontologi Seperti yang ditunjukkan dalam tangkapan skrin anda.

    Apabila parameter adalah objek, saya sebenarnya fikir ia adalah pemindahan nilai, tetapi apa yang diluluskan ialah nilai alamat rujukan objek secara dalaman mengindeks alamat objek rujukan kepada objek data sebenar, dan kemudian menukar atribut dalam objek. Ini Ia adalah keadaan yang akan menjejaskan dunia luar.

    Secara umumnya, jika anda ingin memberikan nilai kepada pembolehubah luaran. Anda juga mungkin tidak melepasi pembolehubah sebagai parameter, tetapi melakukan pemprosesan terus dalam badan fungsi.

    var g;
    function fn(){
       g = 1;
    }
    fn();
    g//1

    Mengikut peraturan carian pembolehubah fungsi, mula-mula cari sama ada pembolehubah mempunyai g dalam badan pelaksanaan semasa Jika ia tidak menjumpainya di lapisan luar, ini bermakna pembolehubah itu belum ditakrifkan atau diisytiharkan.

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:41:36

    Lulus parameter fungsi Javascript ialah semua "laluan nilai".

    Cara yang lebih munasabah untuk menulisnya ialah

    var g;
    function fn() {
        return 33
    }
    g = fn();
    

    Kaedah penulisan yang tidak munasabah

    var g;
    function fn() {
        g = 33;
    }
    fn();
    

    Sebab ketiga mengapa yang terakhir tidak munasabah ialah tahap gandingan terlalu tinggi.

    balas
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:41:36

    var g;
    function fn(){
        g = '32';
    }
    fn();

    Ini boleh melakukan apa yang anda perlukan, tetapi anda mungkin mahu yang universal, bukan?

    你可以选择这样:
    var g;
    function fn(){
        return '32';
    }
    g = fn();

    balas
    0
  • ringa_lee

    ringa_lee2017-05-19 10:41:36

    // a 为变量名字
    function fn(a){
        window[a] = '32'
    }

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:41:36

    var g;
    fungsi fn(nilai){
    g = nilai;
    }
    fn(1);
    g//1

    balas
    0
  • Batalbalas