2011-01-19 148 views

回答

3

这是一个return声明,导致含函数返回一个布尔值。

  1. 它使用变量year的值作为参数调用函数dihy()
  2. 它检查返回值是353还是383(存在的属性的名称在的对象字面值)。不管物业有什么价值,它只需要存在于对象内。 (即,1只是一个任意值。)
  3. 如果是这样,则函数返回true,否则返回false

JavaScript程序员有时会使用这种方法,因为它比单独对每个值进行核对短,很容易编程方式添加新值核对:

var foo = {353: 1, 383: 1}; 

function bar(year) { 
    return year in foo; 
} 

alert(bar(1955)); // false 
foo[1955] = 1; 
alert(bar(1955)); // true 

你可能想看看MDC documentation for the in operator

2

这将是true如果调用该函数dihy的说法year是对象{353:1, 383:1}false否则的关键。

它可以改写这样的例子:

var result = dihy(year); 
return result == 353 || result == 383; 
1

这是一个表达:

dihy(year) in {353:1, 383:1} 

dihy(year)函数调用返回想必一个数字值。如果该值为353383,表达式将评估为true,否则为false

请注意,你的代码是不是一种表达,而是一种说法,return声明:

return expression; 

所以,return陈述或者返回truefalse

0

返回true或false,具体取决于dihy()返回353或383的结果(对于这两个为真,其他都为false)。

这也意味着正是...是包含在此数据收集在这个函数的结果...

0

没有理由在这里使用一个对象,即{353: 1, 383: 1}。事实上,1的值是令人困惑的,并且可以使不熟悉的人认为1的值在不是纯粹任意的时候被返回。

以下是等价的:

dihy(year) in [353, 383] 
+0

这是行不通的。数组对象有两个键:值为355的“0”和值为383的“1”。这意味着只有调用dihy()函数的结果为0或1时,表达式的计算结果才为真,而不是353和383. – 2011-01-19 21:50:32