如何将其包装在javascript函数中

How to wrap this in a javascript function?

本文关键字:javascript 函数 包装      更新时间:2023-09-26

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

你需要返回值

function splitValues() { 
   return document.cookie.split( ';' ).filter( 
    function( s ) { 
      return s.search( 'constituency=' ) == 1 
    })[ 0 ].split( /(=)/ ).slice( 2 ).join( '' );
}

请注意document之前的return

你忘记了return语句:

function splitValues() {
  return document.cookie.split(';').filter(function(s) {
  //^^''
    return s.search('constituency=') == 1
  })[0].split(/(=)/).slice(2).join('');
}

return语句是函数内的第一个语句。

为了使函数工作,您需要返回结果。在您的情况下,您只在 .filter() 方法的函数中返回 .search() 方法的结果。

您还必须返回整个.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('');
}