技术开发 频道

有关JavaScript的10件让人费解的事情

  6. 不一致的函数范围

  参看以下代码:

  foo(bar.method) 返回结果不同原因是,method 函数是被当作 windows 对象,而不是 bar 下的对象调用的。要解决这个问题,我们必须从传递的匿名函数中调用 bar.method() 。

  7. 位操作符

  JavaScript 和 Java 有不少共同之处,如位操作。

  & - and

  | - or

  ^ - xor

  ~ - not

  >> - signed right shift

  ??? - unsigned right shift

  << - left shift

  看看第一个 & 操作符,使用 && 应该更有效,因为 JavaScript 和 Java 不一样,JavaScript 没有整数,需要来回转换,因此,转换操作花的时间更长。

  8. 太多的空值类型

  诸如 null, false, undefined 一类的值几乎表示同样的意思,它们之间的不同又让人很迷惑。

  9. 算术问题

  虽然 JavaScript 包含很多算术操作,但你不妨运行一下下面的算式,".2+.4" 应该等于 ".6" 是不是,然而返回的确是 "0.6000000000000001"。JavaScript 在小数计算访问存在一些小问题。

  为什么会这样?简单说,因为 JavaScript 使用 IEEE 标准进行二进制浮点运算,不过,对整数计算是没问题的。

  10. 莫名其妙的代码错误

  看看以下两段代码:

  它们应该是一样的,只是 { 位置不同而已,是吧。然而我们再看下面的代码:

  如果我们把其中的return与{换行分开,就会引发错误,这是因为 JavaScript 有一个功能,会纠正它认为错误的代码书写,它会自作聪明地在 return 这个词后面插入一个 ";" ,错误因此而生。

0
相关文章