javascript - Wie kann ich einer Variablen außerhalb einer Funktion innerhalb einer Funktion einen Wert zuweisen?
淡淡烟草味
淡淡烟草味 2017-05-19 10:39:36
0
5
2709


Wie oben kann g kein neuer Wert zugewiesen werden. Ich möchte eine fn-Funktion schreiben, die externen Variablen willkürlich Werte zuweisen kann

Die tatsächlichen Anforderungen sind wie oben, ich möchte die instanziierten Variablen nach außen zuweisen

淡淡烟草味
淡淡烟草味

Antworte allen(5)
PHPzhong

题主没理解的一个概念,就是函数参数的传递方式的问题。

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} 

当外部变量作为参数传入函数时,你需要理解两种情况,一个是基本数据类型,一个是对象。

参数为基本数据类型时,函数里参数传的是值传递,也就是把值拷贝到参数去,函数怎么对参数值做改动,也只是对实参的拷贝做改动,不会影响到本体,如你截图所示。

而当参数是对象的时候,我其实也认为是值传递,只是传递的是对象的引用地址值,函数内部对这个引用对象地址进而索引到真实数据对象,然后去改变对象内的属性,这个就是会影响到外部的情形。

一般来说,你如果想任何给外部的变量赋值。你倒不如不以传参的方式去传递变量,而是直接在函数体内做处理。

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

根据function查找变量规则,先在本次执行体内查找变量是否有g,如果没有再往外层找,直到最外层还没有,那就是这个变量没定义没声明过了。

習慣沉默

javascript的函数参数传递都是”值传递“。

一个比较合理写法是

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

不太合理的写法

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

后者不太合理的原因三在于耦合程度太高。

大家讲道理
var g;
function fn(){
    g = '32';
}
fn();

这个能完成你需要的,但是你应该是要个通用的吧?

你可以选择这样:
var g;
function fn(){
    return '32';
}
g = fn();
左手右手慢动作
// a 为变量名字
function fn(a){
    window[a] = '32'
}
我想大声告诉你

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage