我已经看到了这种语法,我不确定它基本上是做什么的。
我目前的假设是,它检查参数是!= null
和is in the return
。
fn = function(value) {
return {
1: 'Test1',
2: 'Test2'
}[value];
}
fn()
会产生undefined
fn(1)
会产生Test1
fn(2)
会产生Test2
fn(3)
会产生undefined
我不确定我的假设。有人可能会澄清我并告诉我这个语法结构的名称是什么(它有特定的名称)吗?
编辑:我用随机数字从这个上下文中看到它并没有意识到它基本上只是访问它。谢谢!
答案 0 :(得分:3)
它没有检查任何东西。
你有一个对象文字。
{
1: 'Test1',
2: 'Test2'
}
使用方括号表示法从中提取值
(result of evaluating previous expression)[value]
然后返回结果
return (result of evaluating previous expression)
您可以将其重写为:
fn = function(value) {
var data = {
1: 'Test1',
2: 'Test2'
};
var return_value = data[value];
return return_value;
}
答案 1 :(得分:1)
此:
{
1: 'Test1',
2: 'Test2'
}
是一个对象文字,因此它的值是一个对象引用。
此:
[value]
是对象属性引用表达式。与对象引用相结合可以获得对象属性值,如果传递给undefined
运算符的字符串值未作为对象中的属性名称找到,则为[ ]
。
代码用return
作为前缀,使得属性查找的结果成为函数的返回值。
因此,只要参数是该对象常量中的属性,该函数就返回与传入的参数的字符串值对应的对象属性值,否则返回undefined
。