有一个我喜欢使用的JavaScript模式,我在网络周围看不到很多,所以我认为值得分享。
当您拥有一段业务逻辑时,通常取决于某个值为真的值。 if语句:
if ( status === 'active' ) { … }
这对我来说很容易解析,我可以快速看到它的作用。不过,通常会发生的事情是,业务逻辑有第二种可能性,例如状态处于活动状态或正在试用的状态:
if ( status === 'active' || status === 'trialing') { … }
这仍然相对容易阅读,但是与状态的重复有关,我总是需要一秒钟来思考||之间的区别和&&了解行为。因此,每当我从一个值从一个值转移到一个以上时,我都会切换到另一个模式:
if (['active', 'trialing'].includes(status)) { … }
i制作所有可能值的数组,然后使用array.includes()检查状态是否包含在该数组中。
这种模式可以舒适地生长到许多项目上,也可以更容易地大声朗读,帮助理解。
没有重复的重复,因此作为一个小奖金,它的较短。它还帮助我了解了includes, contains and has之间的区别。
部分字符串匹配
我从上述模式中获得了很多里程,但是只有在您与完整的字符串匹配时才有效。有时,您只需要检查字符串的开始或结尾,然后.crudes()会因为它仅接受值而不接受函数而删除。
。我们不想返回多次检查和重复,如果我们需要检查一部分字符串,我们需要更改我们使用的功能:
['http://', 'https://', 'file://', 'www.'].some(s => clipboard.startsWith(s)) { … }
array.some()携带功能并返回布尔值。它的时间更长了,但我们仍然没有重复自己。一个不错的好处是,就像incluce()一样,它将停止评估何时返回true,因此我们通常不必循环所有元素。
在上面的示例中,我将数组列入了数组,但是您当然也可以将其存储在全局变量中。这为您提供了仅实例化单个数组的额外好处
正如我所说,我从这种模式中得到了很多用途。希望这可以帮助您认识到将来它在代码中会有用!