清梦

JavaScript陷阱

参考:《数据可视化实战(使用D3设计交互式图表)》——3.7.10 JavaScript陷阱

4个JavaScript陷阱


1.动态类型

松散类型语言,不用提前声明保存在变量中的数据类型为什么类型。

    不要使用未声明的变量

    不要使用未声明的变量

    不要使用未声明的变量

    var a;

    b;

    区别:

    i.b为全局变量,出了函数b依旧存在;但是a只存在于其上下文执行环境中。

    ii.b可以被delet(可配置);但a不行(不可配置)。

    iii.b无变量提升;a有。

2.变量提升

函数中的变量提升

e.g.

var test = "global";

function (){

    console.log(test);    //输出region

    var test = "region";

    console.log(test);    //输出region

}

3.js变量只能限制在函数中,换句话说,

    for(var i = 0; i < 10; i ++){ }

    console.log (i); //10

4.命名空间

    全局命名空间,在全局作用域声明变量,会把该变量加到window对象下面。所以大工程中很容易出现命名冲突

    解决办法:

    方案一    只在函数里声明变量。虽然有时候也不是绝对可行,但函数级作用域可以防止其本地变量跟其他变量发生冲突。 

    方案二    只声明一个全局对象,然后把你本来想作为全局变量的值都作为这个对象的属性。

    (推荐)

    (推荐)

    (推荐)

        e.g.    

        var vis=()

        vis.zebras = "...";

        var.fish = "...";

 



评论