2011-04-12 46 views
3

地块我看到这样为什么我们应该检查被定义的变量var m = m ||函数(){}

Common.deepCopy = Common.deepCopy || function(oldObject) { 
     return $.extend(true, {}, oldObject); 
    }; 

定义什么是定义方法是这样的对象的需求的方法的库。

因为js文件只会被执行一次,所以以前没有定义deepCopy的机会。

+0

如果另一个库实现了这个确切的方法会怎样?然后检查是有道理的,伊莫.. – 2011-04-12 06:10:35

回答

1

情况并非总是如此。你永远不知道JS文件是否包含两次或是否被重新初始化。最好检查对象是否存在,如果存在则分配它。否则创建一个新的对象

3

这是为了防止它已经在另一个文件中定义,或脚本运行多次。

0

通常这是为了检查环境中是否已经存在某个东西,如Array.prototype.indexOf。它在oldIE中不存在。

var indexOf = [].indexOf ? fn : fn2 

现在您可以将fn定义为使用本机indexOf,然后将fn2用于不支持它的环境。

这样更好,所以每次调用函数时都不必检查 - 而是在您定义它时进行检查。

相关问题