有没有办法在JavaScript中创建\返回指向变量的指针?
比如,在PHP中:
function func() {
.....
return &$result;
}
我有一个JS函数,如:
function(...) {
x=document.getElements..... //x is HTML tag
if (x.localName=='input') return x.value //String variable
else if (x.localName=='textarea') return x.innerHTML //String variable
}
使用此功能,我可以从x获取数据的副本,但不能更改源 我希望有可能改变它。
由于
答案 0 :(得分:7)
不,你不能返回指向字符串的指针。在Javascript中,对象被自动分配并通过引用传递,并复制基元。因此,如果您return x;
,则可以修改x.innerHTML
,但如果您返回x.innerHTML
,则会复制字符串。
答案 1 :(得分:2)
Hej Dani-Br
你可以做这样的事情
function(...) {
var x = document.getElements..... //x is HTML tag
if (x.localName=='input') return {
get: function() { return x.value },
set: function(v) { x.value = v; }
};
else if (x.localName=='textarea') return {
get: function() { return x.innerHTML },
set: function(v) { x.innerHTML = v; }
};
}
以便调用者可以设置并获取值。 PS。使用var来声明本地变量
GL
答案 2 :(得分:0)
原始类型按值传递。对象通过引用传递。我猜x.innerHTML是一个字符串,所以它是按值传递的。
看一下这段代码,它会显示你通过引用传递对象:
function test(str){
return str;
}
var k = { txt : 'foo' },
n = test(k);
console.log(n.txt);
k.txt = 'bar';
console.log(n.txt);
答案 3 :(得分:0)
这可能不是您正在寻找的东西,但尚未提出的一件事是内部函数可以访问其外部函数的变量:
function myFunc(){
var x = "hello";
myInnerFunc();
function myInnerFunc (){
//shows the variable of the outer function
console.log(x);
};
};
此外,您可以使用闭包来保存外部函数变量的状态:
function myFunc2(){
var x = "hello";
var timesCalled = 0;
return function (){
timesCalled++;
console.log(x + " called: " + timesCalled);
};
};
var fun = myFunc2();
fun(); //1
fun(); //2
fun(); //3