使用OR条件声明对象的目的是什么?

问题描述 投票:3回答:2
var myApp = myApp || {}; 

我明白上面的内容是什么。但它最好的用例是什么?为什么这种格式不能用于其他语言,如Python或PHP?

javascript
2个回答
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
投票

一个用例是,如果您有两个使用相同变量/ 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();
© www.soinside.com 2019 - 2024. All rights reserved.