如何在javascript函数中包装它?

时间:2016-07-07 12:41:50

标签: javascript function

我有一段代码,我试图将其包装在一个返回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('');
}

3 个答案:

答案 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('');
}