在Javascript中检查和设置默认变量
假设您有一个对象,TRACK,用于跟踪在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.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中使用未声明/未知变量。