首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript变量引用/别名

javascript变量引用/别名
EN

Stack Overflow用户
提问于 2009-11-06 19:22:46
回答 5查看 110K关注 0票数 92

有没有可能在javascript中以某种方式将别名/引用分配给本地变量?

我指的是类似C语言的东西:

代码语言:javascript
复制
function foo() {
  var x = 1;
  var y = &x;
  y++;
  alert(x); // prints 2 
}

=编辑=

是否可以在此代码中使用别名arguments.callee?:

代码语言:javascript
复制
function foo() {
  arguments.callee.myStaticVar = arguments.callee.myStaticVar || 0;
  arguments.callee.myStaticVar++;
  return arguments.callee.myStaticVar;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-06 19:29:45

在JavaScript中,像整数和字符串这样的基本类型是通过值传递的,而对象是通过引用传递的。因此,为了实现这一点,你需要使用一个对象:

代码语言:javascript
复制
// declare an object with property x
var obj = { x: 1 };
var aliasToObj = obj;
aliasToObj.x ++;
alert( obj.x ); // displays 2
票数 175
EN

Stack Overflow用户

发布于 2009-11-06 20:09:01

在某种程度上,这是可能的,您可以使用闭包创建变量的别名:

代码语言:javascript
复制
Function.prototype.toString = function() {
    return this();
}

var x = 1;
var y = function() { return x }
x++;
alert(y); // prints 2, no need for () because of toString redefinition 
票数 15
EN

Stack Overflow用户

发布于 2015-08-04 18:54:27

user187291's post上进行扩展后,您还可以使用getter/setter来避免使用函数。

代码语言:javascript
复制
var x = 1;
var ref = {
    get x()  { return x; },
    set x(v) { x = v; }
};
(ref.x)++;
console.log(x); // prints '2'
x--;
console.log(ref.x); // prints '1'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1686990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档