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


当前回答

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

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

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

其他回答

以下几点也很重要:

1)可变提升。 2)作用域链和激活对象。

然后是这样的::)

3) wtfjs.com

4)一切都是一个对象http://www.lifeinafolder.com/images/Js.jpg

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();

如何使用好的部分,如何避免糟糕的部分。

JavaScript与其他语言的差异比您想象的要大得多。观看这个很棒的谷歌技术讲座,获得印象:http://www.youtube.com/watch?v=hQVTIJBZook