javascript中的indexOf()

时间:2016-02-29 18:17:47

标签: javascript cookies

好的,所以我已经开始从书籍Beginning Javascript 5th ed学习javascript,只是被js脚本搞糊涂了

function getCookieValue(name) {
var value = document.cookie;
var cookieStartsAt = value.indexOf(" " + name + "=");
if (cookieStartsAt == -1) {
    cookieStartsAt = value.indexOf(name + "=");
}
if (cookieStartsAt == -1) {
    value = null;
} else {
    cookieStartsAt = value.indexOf("=", cookieStartsAt) + 1;
    var cookieEndsAt = value.indexOf(";", cookieStartsAt);
    if (cookieEndsAt == -1) {
        cookieEndsAt = value.length;
    }
    value = unescape(value.substring(cookieStartsAt,
       cookieEndsAt));
}
return value;}

我的问题是indexOf运算符在这里是如何工作的(我知道它是如何工作的并且以前使用它)? 上述程序的定义如下:

该函数的第一项任务是获取document.cookie字符串并将其存储在值变量

var value = document.cookie;

接下来,您需要找出带有名称的cookie作为参数传递到函数的位置 在...内 值字符串。您使用String对象的inde x Of()方法来查找它 信息,如下一行所示:

var cookieStartsAt = value.indexOf(" " + name + "=");

该方法将返回找到单个cookie的字符位置,如果不是,则返回-1 这样的名称,因此不存在这样的cookie。你搜索 " " +名称+" ="这样您就不会无意中找到包含您需要的名称的cookie名称或值。例如,如果你 有 xFoo,Foo和yFoo作为cookie名称,搜索没有前面空格的Foo会匹配 首先是xFoo,这不是你想要的!

这里刚刚发生了什么?他们是如何使用indexOf()实现名称的位置的?请解释 ?我无法理解xfoo,foo,yfoo的例子?寻找一个更简单的例子。

1 个答案:

答案 0 :(得分:1)

document.cookie包含类似cookiename=cookievalue

的字符串

indexOf正在获取cookie的值部分开头的位置

var cookieStartsAt = value.indexOf("cookiename=");

这允许您使用该数字来获取带有substring()

的字符串的值部分