0

我正在尝试使用以下语法:

someVar = otherVar || ''; 
// set someVar to otherVar, or '' if otherVar is false

当我将 otherVar 变成某个数组键时,

someVar = otherVar[1] || ''; // otherVar[1] is undefined.

我得到了错误

无法读取未定义的属性“1”

这是有道理的,因为 otherVar[1] 是未定义的......但是 -

问题:防止这种情况的唯一方法otherVar[1]是在设置之前检查是否真实someVar吗?或者我还能像 if else 一样使用这种简单的方法快速设置变量吗?

我也试过

someVar = (!!otherVar[1]) ? otherVar[1] : ''; // didn't work either.

谢谢!

4

2 回答 2

3

您必须首先测试otherVar存在,因此您无法使用该语法真正做到这一点,但您可以这样做:

someVar = otherVar && otherVar[1] ? otherVar[1] : '';

这是有效的,因为 and 语句在索引测试之前失败。

于 2013-04-16T05:02:48.847 回答
1

我假设这是您声明变量的情况但是undefined. 你可以使用这个神秘但简洁的小技巧:

var arr; // declared but 'undefined'
var result = (arr || [,'foo'])[1];

console.log(result); //=> "foo"

arr = [1, 2]; // declared and defined
result = (arr || [,'foo'])[1];

console.log(result); //=> 2
于 2013-04-16T05:07:09.737 回答