为什么要检查定义的变量var m = m || function(){}

Why we should check for the variable being defined var m = m || function(){}

本文关键字:function 定义 变量 var 为什么 检查      更新时间:2023-09-26

我见过很多像这样定义方法的库

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

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

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

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

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

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

var indexOf = [].indexOf ? fn : fn2

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

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