我知道它们可以包含原始数据类型和对象。而且由于我一直在进行React编程,所以我知道它们可以包含对象,组件,甚至json。 javascript变量是否有限制? var / const / let
答案 0 :(得分:3)
任何值都可以存储在JavaScript变量中。值包括:
几乎所有内容都是JavaScript中的对象。值得注意的是,函数是对象(包括Reactor无状态功能组件[SFC]和React组件,它们是构造函数),因此变量可以包含对函数的引用:
function foo(msg) {
console.log("foo: " + msg);
}
function bar(msg) {
console.log("bar: " + msg);
}
const f = Math.random() < 0.5 ? foo : bar;
f("Hi");
使用该代码,您有50/50的机会看到“ foo:Hi”或“ bar:Hi”。
我只能想到的一点是变量不能包含:
操作员。例如。这是无效的:
// NOT VALID
const op = Math.random() < 0.5 ? + : -;
console.log(10 op 5);
...尽管很容易通过函数获得相同的效果:
const op = Math.random() < 0.5
? (a, b) => a + b
: (a, b) => a - b;
console.log(op(10, 5));
执行上下文或词法环境,但这仅是因为没有任何东西在代码中公开过对它们的引用。
内存位置,因为(再次)没有任何东西将它们暴露在代码中。
...甚至json
JSON是用于数据交换的文本符号。 (More here.)如果要处理JavaScript源代码,而不要处理 string ,那么就不涉及JSON。
答案 1 :(得分:0)
变量是解决所有对象的方法。 JavaScript是一种基于对象的语言(字符串,数字等都是具有不同原型的对象)。
例如,var
可以包含:true,undefined,null,“ string”,`template`,{},[],NaN,7,无穷大,/ abc /
我能想到的任何限制。