var myApp = myApp || {};
我明白上面的内容是什么。但它最好的用例是什么?为什么这种格式不能用于其他语言,如Python或PHP?
这种代码用于避免代码中未设置变量的错误。就像在这种情况下:
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 = "";
现在您可以使用您的变量而不会出现任何错误或意外结果。
一个用例是,如果您有两个使用相同变量/ 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();