gpt4 book ai didi

javascript - JavaScript 中的可变变量

转载 作者:行者123 更新时间:2023-11-30 07:10:35 25 4
gpt4 key购买 nike

据我所知,此功能已存在于 PHP 中。让我们看看下面的 php 代码:

$color = 'red';
$$color = 'dark';

功能说明:

有时候能够有可变的变量名是很方便的。即,可以动态设置和使用的变量名。可变变量获取变量的值并将其视为变量的名称。在上面的例子中,red可以作为一个变量的名字。此时PHP符号树中已经定义并存储了两个变量:$color和内容 "red"$red 以及内容 "dark"

我的问题

这可以在 java 脚本中完成吗?

最佳答案

我想到了三种不同的技术,每种都有其警告和(除了第二种)用途:

1) 您可以使用 var 关键字在 JavaScript 代码的任何位置声明一个新变量:

var $color = 'red';

变量实际上在 throughout var 出现的范围内定义,甚至在 var 语句之上——也就是这两个函数尽管它们看起来略有不同,但它们是相同的:

function foo() {
doSomething();
var x = 5;
x += doSomethingElse();
return x;
}

function foo() {
var x;

doSomething();
x = 5;
x += doSomethingElse();
return x;
}

这是因为所有 var 都在创建函数的上下文时生效,而不是它们在代码中出现的位置。更多:Poor, misunderstood var

2) 如果您只是分配给一个从未在任何地方声明过的自由符号,您将创建一个隐式全局变量(不是一个受限于当前范围的变量),这通常是一个坏主意。更多:The Horror of Implicit Globals

3) 您可以做的另一件事是拥有一个对象,该对象是您要跟踪的各种变量的容器。您可以通过分配对象来创建新属性:

var data = {};    // A blank object
data.foo = "bar"; // Now `data` has a `foo` property

当您需要跟踪脚本完全不知道的数据(例如基于用户输入)时,这种技术特别方便,因为您可以使用点分符号和上面的文字 (data.foo),或者您可以使用括号符号和字符串 (data["foo"])。在后一种情况下,字符串可以是任何表达式的结果,因此所有这些都会在 data 上创建一个 foo 属性:

// Dotted notation with a literal
data.foo = 42;

// Bracketed notation with a literal string
data["foo"] = 42;

// Bracketed notation with a string coming from a variable
s = "foo";
data[s] = 42;

// Bracketed notation with a string coming from an expression
s = "o";
data["f" + s + s] = 42;

关于javascript - JavaScript 中的可变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com