Javascript错误-Can't未定义时运行.split

Javascript error - Can't run .split on undefined

本文关键字:未定义 运行 split 错误 -Can Javascript      更新时间:2023-09-26

我想这真的很简单,但我似乎无法实现。我有这个片段。。。

var choice = location.href.split("?")[1].split("=")[1];

它工作正常,直到"choice"为空,然后抛出以下错误。。。。

TypeError: location.href.split(...)[1] is undefined

我理解这是因为你不能对未定义的变量调用split,我认为我的解决方案是存储变量,然后在完全拆分的情况下进行拆分,或者在未定义的情况下忽略它。

有人能帮我做这个吗?

这样做不是很酷,但如果您希望在查询字符串中只有一个参数,则可以这样做:

var choice = (location.href.split("?")[1] || '').split("=")[1];

如果未在查询字符串中设置choice,则会将其作为undedfined

没有足够的信息,但第一次拆分的1索引的属性href未定义,或者最后一次拆分的第二项未定义。

你可以把这个部分分成几个陈述。

var choice;
var firstSplit = location.href;
if (firstSplit) {
    var secondSplit = firstSplit.split("?");
}
if (secondSplit[1]) {
    choice = secondSplit[1].split("=");
}

然后,您可以使用上次拆分返回的任何内容。

如果您试图拆分一个可能有查询字符串也可能没有查询字符串的URL,则会出现此异常。在尝试操作查询字符串之前,您应该检查它是否存在:

var choice;
var outerSplit = window.location.href.split('?');
var innerSplit;
if (outerSplit.length > 1) {
    innerSplit = outerSplit.split('=');
    if (innerSplit.length > 1) {
        choice = innerSplit[1];
    }
}

如果您发现自己经常执行这种类型的查询字符串操作,那么您可能需要投资一个可重用的函数,比如这个问题中的函数。