为什么我的 javascript 函数返回 null?
2020-04-19
702
我有一个函数,它可以在 cookie 字符串中搜索特定的 cookie 并返回其值,但我不明白为什么当 cookie 存在时它一直返回 null。
document.cookie = "userName=nameHere";
function getCookie() {
document.cookie.split(";").forEach(cookie => {
if (cookie.substring(0, cookie.indexOf("=")) == "userName") {
var name = cookie.substring(cookie.indexOf("=") + 1);
console.log(name);
return name;
}
})
return null;
}
>> getCookie()
//prints
nameHere
//returns
null
3个回答
如果仔细观察,您会发现实际上有 2 个函数。
`.forEach(cookie => {`
您实际上在箭头函数中返回
name
解决方案可能是使用
for
循环而不是
forEach
Ilijanovic
2020-04-19
这里有几点需要注意:
- forEach 不会也不应该返回任何内容
- 您的函数返回 null,因为您告诉它返回 null
- 不要在函数中硬编码您要查找的 cookie 的名称,而是将其作为参数传递
话虽如此,这是一个有效的函数:
document.cookie = "userName=nameHere";
function getCookie(cName) {
const decodedCookie = decodeURIComponent(document.cookie) // deal with any special character
// returns the value of the first element in the provided array that satisfies the provided testing function
const cookie = decodedCookie.split(";").find(c => c.substring(0, c.indexOf("=")) == cName)
if (!cookie) return null // cookie not found, return
const value = cookie.substring(cookie.indexOf("=") + 1)
return value
}
console.log(getCookie('userName'))
jperl
2020-04-19
我的猜测是:
var name = cookie.substring(cookie.indexOf("=") + 1);
实际上没有指定名称。尝试在名称变量后放置一个 Alert,或记录名称以检查内容。
Cornelis
2020-04-19