为什么要检查定义的变量var m = m || function(){}
Why we should check for the variable being defined var m = m || function(){}
我见过很多像这样定义方法的库
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。
这样做更好,这样您就不必在每次调用函数时都进行检查,而是在定义函数时进行检查。
相关文章:
- $(document).ready和jQuery(function($)不工作;jQuery已定义,但脚本尚未定义;t进
- 防止自定义文本出现在页面上的所有高图表上,←使用 {events:{load:function(){var.
- Javascript,未捕获引用错误:未定义function()
- 财产的价值'openNewWin'为null或未定义,而不是Function对象
- 对 Javascript 中未定义的 .function 进行最小条件检查
- 角度.js错误:factory.function(..) 未定义
- 定义一个扩展Function的类
- JavaScript中到底定义了什么(function(require){..})
- TypeError:调用Function.protype.method()时,this.prototype未定义
- Javascript〔remove:function〕记录自定义数组CQ-Ext-js
- 定义函数并在select语句中用作onchange,而不是直接使用.change(function)
- “function"Javascript中没有定义错误:调用函数的正确方式是什么?
- Uncaught ReferenceError: [function]没有定义
- 为什么函数属性定义在对象本身上(例如Function.name),而方法定义在Function.prototype上?
- JavaScript类定义从(function())开始
- 美元(文档).Ready (function() $未定义
- 为什么object.function.this在使用function.call时没有定义
- 为什么Function.prototype.bind() "函数中的自定义属性
- 0x800a138f - JavaScript运行时错误:属性'$'为空或未定义,不是Function对
- 为什么要检查定义的变量var m = m || function(){}