javascript - Bagaimana untuk memberikan nilai kepada pembolehubah di luar fungsi di dalam fungsi?
淡淡烟草味
淡淡烟草味 2017-05-19 10:39:36
0
5
2611


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

淡淡烟草味
淡淡烟草味

membalas semua(5)
PHPzhong

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.

習慣沉默

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.

大家讲道理
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();
左手右手慢动作
// a 为变量名字
function fn(a){
    window[a] = '32'
}
我想大声告诉你

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!