Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中检查和设置默认变量_Javascript_Oop_Object - Fatal编程技术网

在Javascript中检查和设置默认变量

在Javascript中检查和设置默认变量,javascript,oop,object,Javascript,Oop,Object,假设您有一个对象,TRACK,用于跟踪 TRACK = {}; TRACK.pageName = pageName || TRACK.buildPageName(); 如果在它之前的某个地方有这样的东西,这将很好地工作: var pageName = "Home"; 让我们假设一种解决方法是: TRACK.pageName = (typeof pageName != 'undefined' ? pageName : TRACK.buildPageName()); 对于大型javascrip

假设您有一个对象,TRACK,用于跟踪

TRACK = {};
TRACK.pageName = pageName || TRACK.buildPageName();
如果在它之前的某个地方有这样的东西,这将很好地工作:

var pageName = "Home";
让我们假设一种解决方法是:

TRACK.pageName = (typeof pageName != 'undefined' ? pageName : TRACK.buildPageName());

对于大型javascript对象,有更好的做法吗

如果您在浏览器中,则可以执行window.pageName来检查pageName值

TRACK.pageName = window.pageName !== undefined ? pageName : TRACK.buildPageName();
但这并不是一个更好的做法。这只是第二种方法。使用typeof也很好。

您的示例:

TRACK.pageName = pageName || TRACK.buildPageName();
是正确的,但是如果您想使用undefined进行campare,这里有一种方法:

if (pageName !== undefined){...}

我认为,您可以在TRACK.buildPageName中实现这个if语句。 如果pageName是全局变量,则可以从TRACK.buildPageName内部访问它

{
...
    buildPageName: function() {
        this.pageName = (typeof pageName != 'undefined' ? pageName : TRACK.innerBuildPageName());
    }
}

多亏了这一点,您可以只隐藏和实现一次if语句。

我认为TRACK.pageName=pageName | | TRACK.buildPageName是可以接受的。多亏了-在使用速记语法之前,我一直在寻找如何处理空变量的更好实践。您不能这样做。如果pageName不存在,您将得到一个错误,如pageName未定义。除了在typeof操作符中,不能在javascript中使用未声明/未知变量。