为什么我们应该检查被定义的变量var m = m ||功能(){}

时间:2011-04-12 06:07:40

标签: javascript

很多图书馆我见过像这样定义的方法

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

定义方法的必要性是这样的对象。

因为js文件只会被执行一次,所以之前不可能定义deepCopy。

3 个答案:

答案 0 :(得分:3)

以防它已经在另一个文件中定义,或者脚本运行多次。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

通常这是检查环境中是否存在某些内容,例如Array.prototype.indexOf。它在oldIE中不存在。

var indexOf = [].indexOf ? fn : fn2

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

这种方式更好,所以每次调用函数时都不必检查 - 而是在定义时检查。