3

我正在尝试构建一个脚本,该脚本将检查是否存在名为result的 url 变量,如果存在,则检查该值是否等于成功。

我尝试了以下但如果结果不存在那么它将我的脚本错误为未定义

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}
var first = getUrlVars()["result"];
alert(first);
4

2 回答 2

3

为什么不简单地检查它是否未定义?

if (first !== undefined)
     alert(first);
else alert('ooops');

或者您可能还可以定义类似“默认值”的内容:

var first = getUrlVars().result || '';
于 2012-07-17T08:42:24.260 回答
0

如果“结果”不在查询字符串中,则不会将其放入 vars 对象中。

因此,如果您想保留:

'first = getUrlVars()["result"]'

事情发生了,你将不得不接受如果“结果”根本不存在,那么它将显示为未定义(这是当你要求一个不包含任何内容的数组索引时得到的结果,或尚未设置的对象属性)。

如果您坚决反对这样做,请尝试:

var first = getUrlVars()["result"] || "not-success";

|| 将允许您返回任何您想要的值作为 first 的值,在这种情况下

vars.result === undefined;


first = result || false;
first = result || {};
first = result || fire_this_function("no-result");
// first now equals the return value of the function if result === undefined

这些都和说的一样:

if (result === undefined) { first = "........"; }
于 2012-07-17T08:50:18.907 回答