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 = "...";
评论