【发布时间】:2011-03-14 03:16:47
【问题描述】:
将代码放在 try-catch 块中而不是执行各种错误检查会更快吗?
例如..
function getProjectTask(projectTaskId) {
if (YAHOO.lang.isUndefined(projectTaskId) || YAHOO.lang.isNull(projectTaskId) && !YAHOO.lang.isNumber(projectTaskId)) {
return null;
}
var projectPhaseId, projectPhaseIndex, projectTaskIndex, projectPhases, projectPhase, projectTask;
if (!YAHOO.lang.hasOwnProperty(projectTaskPhaseMap, projectTaskId)) {
return null;
}
projectPhaseId = projectTaskPhaseMap[projectTaskId];
if (YAHOO.lang.isUndefined(projectPhaseId) || YAHOO.lang.isNull(projectPhaseId) || !YAHOO.lang.hasOwnProperty(scheduleData.ProjectPhasesMap, projectPhaseId)) {
return null;
}
projectPhaseIndex = scheduleData.ProjectPhasesMap[projectPhaseId];
if (YAHOO.lang.isUndefined(projectPhaseIndex) || YAHOO.lang.isNull(projectPhaseIndex) || !YAHOO.lang.hasOwnProperty(scheduleData.ProjectPhases[projectPhaseIndex])) {
return null;
}
projectPhase = scheduleData.ProjectPhases[projectPhaseIndex];
if (!YAHOO.lang.hasOwnProperty(projectPhase.ProjectTasksMap, projectTaskId)) {
return null;
}
projectTaskIndex = projectPhase.ProjectTasksMap[projectTaskId];
if (YAHOO.lang.isUndefined(projectTaskIndex) || YAHOO.lang.isNull(projectTaskIndex)) {
return null;
}
projectTask = scheduleData.ProjectTasks[projectTaskIndex];
}
VS
function getProjectTask(projectTaskId) {
try {
projectPhaseId = projectTaskPhaseMap[projectTaskId];
projectPhaseIndex = scheduleData.ProjectPhasesMap[projectPhaseId];
projectPhase = scheduleData.ProjectPhases[projectPhaseIndex];
projectTaskIndex = projectPhase.ProjectTasksMap[projectTaskId];
projectTask = scheduleData.ProjectTasks[projectTaskIndex];
}
catch (e) {
return null;
}
}
我希望我的问题是有道理的。我很乐意澄清。 谢谢!
【问题讨论】:
-
即使
function isNull(c)也没用,看我的回答... :) -
我也不熟悉 YUI,但检查 null || undefined 可以用 javascript 轻松完成
-
抱歉,我重新格式化了代码部分以减少滚动。你们是对的。当一个简单的内置 javascript 语句就足够时,我尝试使用 YUI 库代码。 =P
标签: javascript try-catch