戏谈javaScript中的几种神奇现象(漏洞)

javaScript的诞生就是个非常仓促的过程,但是却在诞生短短一年半就发布了国际标准,以至于有缺陷没来得及修复就已经被置顶为国际标准,反观c语言,是在诞生20多年才统一了国际标准.但是javaScriptr虽然漏洞很多,但是却随着web的迅猛发展,一路高歌猛进.

浅谈JavaScript中的神奇现象(漏洞)

1.null 和 undfined 

先来说一下神奇的null和undfined,null属于对象(object)的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义。

 typeof null; // object

 typeof undefined; // undefined

看起来貌似很正常,那么我们申明一个变量

 var variable;

  alert(variable== null); // true

  alert(variable== undefined); // true

如果我们用===来判断的话

 var variable;

 alert(variable== null); // false

 alert(variable== undefined); // true

2.==和===

==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。

 "" == "0" // false

  0 == "" // true

  0 == "0" // true

  false == "false" // false

  false == "0" // true

  false == undefined // false

  false == null // false

  null == undefined // true

  " \t\r\n" == 0 // true

所以任何时候都推荐用===做比较符

3.分号问题

       在写js代码时,每一行都必须以分号结尾。但是,如果你忘记加分号,解释器并不报错,而是为你自动加上分号。有时候,这会导致一些难以发现的错误。

function(){

    return
      {
        i=1
      };

  }

这几行代码报错的原因就是,在return后面自动加了分号

4.+号问题

+既可以用来在加法的运算符,又可以用来拼接字符串.这就很神奇了

 alert(1+1); // 2

 alert("1"+"1"); // 11

如果被操作的一方是字符串,一方是数字

 alert(1+'2'); // 12

 alert(1+"10"); // 110

这种情况就会造成,如果我们不知道数据类型的情况下非但不会报错.还会得到我们预期之外的结果.



戏谈戏谈!! 日后更新!!


猜你喜欢

转载自blog.csdn.net/qq_36725757/article/details/80137317