假设您有一个用于跟踪的对象TRACK
TRACK = {};
TRACK.pageName = pageName || TRACK.buildPageName();
如果在它之前有某个地方,这样可以正常工作:
var pageName = "Home";
让我们假设一种方法来解决这个问题:
TRACK.pageName = (typeof pageName != 'undefined' ? pageName : TRACK.buildPageName());
使用大型JavaScript对象执行此操作是否有更好的做法?
答案 0 :(得分:0)
如果您在浏览器中,则可以window.pageName
检查pageName值。
TRACK.pageName = window.pageName !== undefined ? pageName : TRACK.buildPageName();
但这并不是一个“更好”的实践。这只是第二种方式。使用typeof
也很好。
答案 1 :(得分:0)
你的例子:
TRACK.pageName = pageName || TRACK.buildPageName();
是正确的,但是如果你想与undefined
进行比较,可以这样做:
if (pageName !== undefined){...}
答案 2 :(得分:0)
我认为,你可以在TRACK.buildPageName()中实现这个if语句。 如果pageName是全局变量,您可以从TRACK.buildPageName()
中访问它{
...
buildPageName: function() {
this.pageName = (typeof pageName != 'undefined' ? pageName : TRACK.innerBuildPageName());
}
}
多亏了这一点,你可以只隐藏和实现这个if语句一次。