var myApp = myApp || {};
我明白上面的代码是什么。但什么是最好的使用案例。为什么这种格式不能用在Python,PHP等其他语言中。为什么我们用条件myApp = myApp ||声明对象{};
var myApp = myApp || {};
我明白上面的代码是什么。但什么是最好的使用案例。为什么这种格式不能用在Python,PHP等其他语言中。为什么我们用条件myApp = myApp ||声明对象{};
这种代码用于避免代码中未设置变量的错误。像在这种情况下:
if (!isset($variable)) $variable = "";
现在你:
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()
功能做到这一点:
function sayHello(name) {
return "Hello " + name;
}
sayHello(); // "Hello undefined"
function lengthOf(obj) {
return obj.length;
}
lengthOf(); // ReferenceError cannot read property length of undefined
你可以通过添加一个简单的线条避免可以使用你的变量而不会有任何错误或意外的结果。
一个用例就是如果你有两个脚本使用相同的变量/ 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();
希望你不介意。 – manuell 2016-02-11 14:32:49
一点都不,谢谢。 – 2016-02-11 20:12:47