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