老鸟学Javascript - 第一弹

原文:http://h01mes.com/veteran-new...javascript

我仍然记得在一个ajax小项目踩到跨域问题(CORS)的坑,最后用Chrome插件解决。由此对Javascript这个奇怪的语言留下很深的印象。如今,Javascript在先后端都取得很是大的影响力,已然成为了全栈的同义词。因此我决定认真搞一搞这个语言。顺带一提,跨域能够用Moesif解决。html

本文不会讨论初级的编程问题,好比if else,for循环,已经面向对象。若是您还不熟悉这些,请先出门左转,网上有足够多的资料讨论这些大同小异的概念。java

本文主要关注一些离散的,即学即用的知识点,和一些在平常编程中容易踩得坑。git

用==和===进行比较

==会对运算对象进行类型自动转换,因此能够认为==等同于值比较。
===不作类型转换,因此若是比较对象的类型不一致,===直接返回false。有些文章说===是引用比较,我的认为并不许确。
例子:程序员

<html>
<head>
  <script>
//comparing string with number
      var res = "1" == 1;
      alert(res);

      res = "1" === 1;
      alert(res);

//comparing two special type with the same value
      res = null == undefined;
      alert(res);

      res = null === undefined;
      alert(res);

//comparing number with object
    var obj = new Number(123);
    res = 123 == obj
    alert(res)

    res = 123 === obj
    alert(res)

  </script>
</head>
<body>
</body>
</html>

运行结果是:github

true
false
true
false
true
false

这里,NaN === NaN 永远是返回false。因此咱们只能用isNaN()来判断NaN。web

===相似于其它语言的==;==则相似于equals()或其它相似函数。因此划分这两个等于符还有点意义。可是下面的这个划分就彻底是怪异了。ajax

注:===和==的完整的行为表chrome

clipboard.png

clipboard.png

来源:http://dorey.github.io/JavaSc...编程

用undefined和null来表示空值

简单来讲,undefined是由Javascript运行时默认赋值给变量的,而null则是由程序员来显式赋值。当程序员给一个变量赋值为null时,一般表示这个变量已经不用了。

更多例子:

<html>
<head>
  <script>
    var res;
    alert(res);

    res = null;
    alert(res);
  </script>
</head>
<body>
</body>
</html>

运行结果:

undefined
null

接下来,咱们来看看更多关于undefined 的例子:

<html>
<head>
  <script>
  var res = [1,2,3];
  alert(res[10]);

  function doSomething(first, second, optional) {
      alert(optional);
  }
  doSomething(1,2);
  </script>
</head>
<body>
</body>
</html>

运行结果:

undefined
undefined

如今你能够发现,若是一个变量没有被显式赋值,例如,数组越界访问,或者访问没有被传值的参数,javascript运行时会用undefined来填补这个值。

相关文章
相关标签/搜索