我想要什么
我正在尝试使用typeof来检查数组元素是否存在。原因是为了防止Cannot read property '0' of null
错误。但是,只是尝试检查元素是否存在会导致错误。
我尝试了什么
if (typeof foo[0] !== 'undefined')
{
// I want to get here
}
和
if (typeof(foo[0]) !== 'undefined')
{
// I want to get here
}
这是循环的一部分,前四次迭代起作用,第五次迭代不起作用,第六次假设起作用。但是,它在第五个循环中失败了。我不能写一个异常,因为输入可以改变循环的哪些迭代被认为是有效的,哪些不会起作用。
我认为这是正确的方法,我不应该根据这些stackoverflow答案接收这种行为。
Check if an array item is set in JS
Checking if a key exists in a JavaScript object?
How to check if a multidimensional array item is set in JS?
我认为关键是你可以在尝试使用它之前检查一个元素是否已设置并自行抛出错误。其他用户似乎可以使用完成此操作。我猜我在做一些与众不同的事情。如何在不使脚本失败的情况下检查是否设置了数组索引,因为我正在查看未设置的数组索引。
更多情境中的代码
不应该,但只是想要。
for (templ_i=0; templ_i<number_of_fields; templ_i++)
{
// Font size
if (d['font_size_group'][templ_i]['font_size'])
{
size_re = new RegExp('"text_' + line + '" font-size="\\d+(\\.[0-9]+)?"', 'g');
current_line = svg_template.match(size_re);
size_re = new RegExp('[^_"]\\d+(\\.[0-9]+)?', 'g');
if (typeof current_line[0] !== 'undefined') { current_font_size = current_line[0].match(size_re); }
console.log(current_font_size);
}
}
答案 0 :(得分:6)
response = @google_mail_session.execute(
:api_method => @gmail_api.users.messages.list,
:parameters => {:userId => 'me'}) # you can use the standard address here if you don't want to authorize to a specific account above
这样做:
typeof foo[0]
但是,如果foo[0]
为空,则foo
将抛出。
所以你可以使用
foo[0]
答案 1 :(得分:0)
if (typeof(foo && foo[0]) !== 'undefined')
{
// I want to get here
}
答案 2 :(得分:-1)
typeof return'string'。
如果你想使用typeof - 使用它是正确的:
if (typeof foo[something] != 'undefined')
{
// Now you can get foo[something]
}
重要
a = null;
typeof a
将返回“对象”