javascript变量可以包含任何内容吗?

时间:2018-09-22 22:12:41

标签: javascript types

我知道它们可以包含原始数据类型和对象。而且由于我一直在进行React编程,所以我知道它们可以包含对象,组件,甚至json。 javascript变量是否有限制? var / const / let

2 个答案:

答案 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 /

我能想到的任何限制。