为什么它返回undefined?

时间:2016-07-12 11:34:56

标签: javascript google-chrome

我想存储为以下方法,并通过查询使用键查找值或按值查找键来获取常量值

function my_reference() {
  return {
    30:'',
    31:'ERR591',
    32:'ERR761',
    33:'ERR671',
    34:'ERR551',

  };
}

console.log( my_reference[31], 
             my_reference.31, 
             my_reference().31,
             my_reference()[31]
);

5 个答案:

答案 0 :(得分:4)

my_reference[31], 

尝试读取函数的属性(不存在)。该属性位于对象上,该对象是调用函数的返回值。

my_reference.31, 

尝试使用数字作为标识符。这是不允许的。

my_reference().31,

尝试使用数字作为标识符。这是不允许的。

my_reference()[31]

这有效

答案 1 :(得分:1)

如果您希望它返回结果,您必须调用函数,函数调用:

my_reference()

所以这两个第一行都不起作用,因为my_reference将返回自己的函数而不是调用它:

my_reference[31]
my_reference.31

第三个也不起作用console.log(my_reference().31);因为属性不能是数字。

希望这有帮助。

答案 2 :(得分:1)

您需要使用my_reference()执行该功能,然后访问您想要的属性..但javascript对象中的键始终是字符串:

console.log(my_reference()['31']);

答案 3 :(得分:0)

您无需使用函数来存储引用:

var reference = {
    30:'',
    31:'ERR591',
    32:'ERR761',
    33:'ERR671',
    34:''
};

console.log(reference[31]);

答案 4 :(得分:0)

这是固定代码

function my_reference() {
  return {
    _30:'',
    _31:'ERR591',
    _32:'ERR761',
    _33:'ERR671',
    _34:'ERR551'
  };
}

var f = my_reference();

console.log(f["_31"]); 
console.log(f._31);
console.log(my_reference()._31);
console.log(my_reference()["_31"]); 

无法使用数字命名变量 前两个应该是返回的对象