码迷,mamicode.com
首页 > 编程语言 > 详细

javaScript怪癖分析

时间:2014-12-05 10:35:47      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

最近了解到javascript中有些编程怪癖现象,很有意思,有必要总结一下:

1.未知变量名创建全局变量

    在我们平常的编写javascript程序的时候,有的人写法不是很正规,在定义变量的时候 直接定义“变量名=值”前面没有加上"var" 则javascript自动将其定义为全局变量看待

    但在 ECMAScript5 的严谨模式得到警告:

            例如:function f() { ‘use strict‘; foo = 123 } f() ReferenceError: foo is not defined

 

2.两个空值 underfined 和 null

    对于“空值”或“空引用”,大多数编程语言只有一个值。比如,在 Java 中用的是 null,但在javascript给出了2个值(undefined 和 null)

   underfined:

   

 <script type="text/javascript">
        var s;
        console.log(s);
    </script>

结果:bubuko.com,布布扣

 同理:当在对传值参数操作的时候,如果没有值,会自动分配一个undefined。

  <script type="text/javascript">
       function id(x) { return x }
       console.log(x);
  </script>

在火狐运行结果:bubuko.com,布布扣

在IE运行结果:bubuko.com,布布扣 汗!火狐好歹给一个undefined,IE直接就判断未定义,这机制太懒了。。。

 

    null:是被开发者用来明确指出某个值是缺失的

      在开发过程中,我们传参可能需要这个参数没有值,对此场景就设置一下参数等于null即可。

 

      校检:一个变量是否有值?

<script type="text/javascript">
         //例子
         var x ;
         if (x) {
             console.log(‘有值‘);
         } else {
             console.log(‘没值‘);
         }
</script>

如果你想知道变量 x 是否有值,正常情况下,你需要同时检验 undefined 与 null。 幸运的是两个值都是false。 因此,只用一个判断,就可以同时检验这两项是否为真,有一点要注意的是:这个检查也会把 false, -0, +0, NaN 与 ‘‘ 当成“空值”。 如果这不是你想要的,那么就不能使用上面的校检方法了。还有2种方法选择

有人喜欢用"!="来进行参数校验

 

 

  

 

javaScript怪癖分析

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/kuailingmin/p/4145840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!