Javascript:为什么函数对array()和array []的处理方式不同?

时间:2018-01-01 05:57:02

标签: javascript arrays parentheses brackets

在课堂上,老师无法解释为什么推文(i)失败,推文[i]有效:

  var tweets=["hi","who","when","where","bye"];
  alert("start");
  for (var i=0; i < tweets.length; i++) {

    alert(tweets[i]);
  }
  alert("finish"); 

3 个答案:

答案 0 :(得分:2)

括号用于函数,因此array()将是一个名为array的函数。方括号用于数组,因此array[]将是一个数组。 array[0]是数组中的第一个条目,array(1)1作为参数发送给名为array的函数。

停止上课,老师不能解释这么简单的事情。他们显然不是程序员。

答案 1 :(得分:1)

推文(i)在此代码段中失败的原因是因为,当您说tweets(i)时,javascript会查看它并说&#34;哦,代码要我去找一个名为tweets的函数使用名为i。&#34;

的参数执行它

当javascript看到tweets[i]时,它会说&#34;哦,这不是一个功能。代码希望我在数组中找到number-i的位置并将其存储在那里。

简而言之,tweets(i)无效的原因是因为您告诉它提醒您尚未定义的功能。

答案 2 :(得分:0)

()是方法调用运算符,[x]是成员访问运算符。由于数组不是函数(例如typeof array !== 'function'),因此您只能在数组上使用成员访问运算符。

注意:

  • 我不知道上述运营商的specification名称,需要专家解释。
  • 函数是一个对象,因此您可以在其上使用两个运算符

e.g。

var func = function() { return 'hello'; };

func.world = 'earth'
console.log(func());
console.log(func['world'])
console.log(func.world)