Mer*_*erc 5 javascript variables design-patterns
我已经编写了一段时间的Javascript,但仍然不太确定我是不是太懒了.我有很多:
if( typeof( something) === 'undefined' ){
// ..
}
Run Code Online (Sandbox Code Playgroud)
但是,有时候它变得过于冗长.例如,现在我在做:
var redirectURLs = hotplate.get('hotCoreAuth/redirectURLs/success') || {};
Run Code Online (Sandbox Code Playgroud)
这是因为在以下几行中我将redirectURL视为一个对象,尽管它可能根本没有定义(该函数可能会返回undefined).
是否有"最佳实践"备忘单?我上面写的是不是太懒了?只是替代方案很麻烦:
var redirectURLs = hotplate.get('hotCoreAuth/redirectURLs/success');
if( typeof( redirectURLs ) === 'undefined' ){
redirectURLs = {}
}
Run Code Online (Sandbox Code Playgroud)
我意识到快捷方式不那么健壮,但是再一次,人们要么设置了这个值,要么不设置.
想法?
芝加哥商业交易所.
当您使用“快捷方式”时,相当于以下内容:
\n\nvar redirectURLs = hotplate.get(\'hotCoreAuth/redirectURLs/success\');\nif (!redirectURLs) redirectURLs = {};\nRun Code Online (Sandbox Code Playgroud)\n\n规范 ( ECMA-262 ) 规定逻辑 OR 运算符 ( ||) 测试第一个表达式(在本例中为函数调用)是否强制为 true - 如果它强制为 true,则返回第一个表达式,否则返回第二个。
它还说明了强制为真和假的内容(\xc2\xa79.2 - 请注意,这不是逐字给出的):
\n\n\n\n\n错误的:
\n\n\n
\n\n- 数字 +0、-0 和 NaN
\n- 空字符串 (
\n"")- \n
false- \n
null- \n
undefined正确:其他一切(包括类似的东西
\nnew Boolean(false))
因此,如果您不介意让大多数数字、字符串或值true通过,那么逻辑“或”“快捷方式”就可以了。redirectURLs请注意,如果为 null,您的“详细”代码可能会中断:
var redirectURLs = null;\nif (typeof redirectURLs === \'undefined\') {\n redirectURLs = {};\n}\nredirectURLs.test = \'1\'; // TypeError: Cannot set property \'test\' of null\nRun Code Online (Sandbox Code Playgroud)\n