var myApp = myApp || {};
我明白上面的内容是做什么的。但它的最佳用例是什么?为什么这种格式没有在Python或PHP等其他语言中使用?
答案 0 :(得分:5)
这种代码用于避免代码中未设置变量的错误。就像在这种情况下:
function sayHello(name) {
return "Hello " + name;
}
sayHello(); // "Hello undefined"
function lengthOf(obj) {
return obj.length;
}
lengthOf(); // ReferenceError cannot read property length of undefined
您可以通过添加一个简单的行来避免它:
function sayHello(name) {
var name = name || "";
return "Hello " + name;
}
sayHello(); // "Hello "
sayHello("Mike"); // "Hello Mike"
function lengthOf(obj) {
var obj = obj || [];
return obj.length;
}
lengthOf(); // 0
lengthOf([1,2,3]); // 3
在PHP中,您可以使用isset()
函数:
if (!isset($variable)) $variable = "";
现在您可以使用您的变量而不会收到任何错误或意外结果。
答案 1 :(得分:1)
一个用例是,如果你有两个使用相同变量/ ns的脚本,并且你想确保只创建一个新的脚本,除非它已经被定义。
您可以使用它来模拟javascript中的命名空间:
(function(api){
/* private functions here */
api.apiFunction = function(){ /* useful code*/ }
})(window.myNamespace = window.myNamespace || {})
您稍后可能加载的任何其他脚本,您希望成为同一名称空间的一部分,然后只使用相同的语法来附加新功能:
(function(api){
/* private functions here */
api.anotherApiFunction = function(){ /* useful code*/ }
})(window.myNamespace = window.myNamespace || {})
anotherApiFunction现在附加到同一名称空间。您可以访问以下两个函数:
myNamespace.apiFunction();
myNamespace.anotherApiFunction();