是否有一组东西是每个JavaScript程序员都应该知道的,以便能够说“我懂JavaScript”?


当前回答

由于JS是一种函数式语言,一个优秀的JS程序员必须能够写出Y-combinator,并能毫不费力地解释它是如何工作的。

其他回答

数组中。Length方法不是数组项的计数,而是最高索引。即使该项被设置为undefined

var a = [];
a.length;   // === 0
a[10];      // === undefined
a[10] = undefined;
a.length;   // === 11
a.pop();    // === undefined
a.length;   // === 10

这种行为很难与语言设计错误区分开来。

jQuery是我最好的推荐。不仅仅是代码本身,它的习惯用法、风格和背后的思想都是最值得模仿的。

由于JS是一种函数式语言,一个优秀的JS程序员必须能够写出Y-combinator,并能毫不费力地解释它是如何工作的。

你知道javascript,如果你能有效地使用数组,数字,字符串,日期和对象。为Math和RegExp加分。你应该能够编写函数和使用变量(在正确的范围内,即作为对象的“方法”)。

我看到一些关于了解闭包的评论,奢侈的函数语法,blabla。所有这些都与这个问题无关。这就好比说,如果你能在11秒内跑完100米,你就是一名跑步者。

我说可能需要几周的时间来精通javascript。在那之后,你需要花费数年时间,阅读数十本书,编写数千行程序,才能成为专家、忍者等等。

但这不是问题所在。

对了,DOM不是javascript的一部分,jQuery也不是。所以我认为两者都与这个问题无关。

变量是全局的,除非声明为局部的!!

Bad (DoSomething()只被调用10次):

function CountToTen()
{
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();

好(DoSomething()按预期被调用50次):

function CountToTen()
{
  var i;
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  var i;
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();