直接比较字符串是JavaScript中的常见做法。 ENUM状结构,虽然容易实现,通常不很习惯,因为你要么必须定义您的ENUM样的全局或做类似:
application.enums.myObject.hover= 1;
application.enums.myObject.click= 2;
myObject= new application.constructors.MyObject();
myObject.create(title, text, orientation, application.enums.myObject.hover, layout)
以这种方式唯一的应用程序是全球性的,但输入的应用.enums.myObject是一个痛苦。
如何处理错误:
选项1:抛出一个异常:
Create: function (title, text, orientation, trigger, layout) {
if (trigger !== "hover" && trigger !== "click") {
throw "error: invalid parameter trigger";
}
},
,除非你有一个catch子句某处这将崩溃的脚本。在某些情况下,让派对崩溃总比没有提供一种方式来知道什么是错的更好。如果你打算捕捉这些异常(而不是让它们只是使脚本崩溃),我建议通过为错误等进行类化来正确地执行它。
选项2:返回null。
Create: function (title, text, orientation, trigger, layout) {
if (trigger !== "hover" && trigger !== "click") {
return null;
}
},
如果您要使用函数的返回值,此方法效果会更好。在调试时,当尝试使用返回值时会看到“对象没有名为X的属性”错误(或者如果您使用它的话,您的值将被强制转换为“null”字符串)。
选项3:静静地忽略错误,什么都不做。你的脚本可能会自行崩溃,或者它什么都不会做。不建议
意见:
1 - 不要在生产代码中使用控制台对象。这不是标准的一部分,除非你打开开发者控制台,否则IE不会将它暴露给网页。
2 - 不要用大写字母开头函数名,除非它是一个函数,应该用'新'关键字(即构造函数)。
假设您的意图是创建公开可用的东西,它应该有一个发布的API来定义参数,并且不应该要求开发人员阅读代码。 –
您是否想知道如何验证* one *特定参数的值或如何处理如此多的参数。就个人而言,如果有超过3个参数,并且如果可以有可选的参数,我会让该函数接受一个对象。使用默认值是很好的IMO。 –
@JamesMontagne如果听起来像我愿意将它发布到某个地方,我很抱歉。这不仅仅是一个真正的问题,而是一个概念性的问题,但是我正在一家公司开发,并且我想使用最佳实践,因为其他开发人员也会使用这些代码。 – v1n1akabozo