我有一段代码,我试图将其包装在一个返回cookie值的函数中。
document.cookie.split(';').filter(function(s) {
return s.search('constituency=') == 1
})[0].split(/(=)/).slice(2).join('');
在我的浏览器控制台中,这将完美地返回cookie值。我希望能够在另一个函数中使用这个值,但是当我尝试将它包装在一个函数中时,它会说“未定义”。
有人可以帮我理解为什么吗?
function splitValues() {
document.cookie.split(';').filter(function(s) {
return s.search('constituency=') == 1
})[0].split(/(=)/).slice(2).join('');
}
答案 0 :(得分:5)
您需要返回值
function splitValues() {
return document.cookie.split( ';' ).filter(
function( s ) {
return s.search( 'constituency=' ) == 1
})[ 0 ].split( /(=)/ ).slice( 2 ).join( '' );
}
请注意return
之前的document
答案 1 :(得分:2)
您忘记了return
声明:
function splitValues() {
return document.cookie.split(';').filter(function(s) {
//^^\\
return s.search('constituency=') == 1
})[0].split(/(=)/).slice(2).join('');
}
return
语句是函数内的第一个语句。
答案 2 :(得分:2)
要使功能正常工作,您需要返回结果。在您的情况下,您只在.search()
方法的函数内返回.filter()
方法的结果。
您必须返回.filter()
方法的结果以及它的工作原理:↓
return document.cookie.split(';').filter(function(s) {...}...
整个功能:
function splitValues() {
return document.cookie.split(';').filter(function(s) {
return s.search('constituency=') == 1
})[0].split(/(=)/).slice(2).join('');
}