Jest equivalent to RSpec lazy evaluated variables (let)?

The best solutions I've found have been libraries like

https://github.com/stalniy/bdd-lazy-var

and

https://github.com/tatyshev/given2

If you don't want to introduce a dependency, you can get similar behavior (albeit without lazy evaluation) by doing something like this:

beforeEach(() => {
  let input = 'foo';
  beforeEach(() => {
    setupSomeThing(input);
  });

  describe('when input is bar', () => {
    beforeAll(() => {
     input = 'bar';
    });

    it('does something different', () => {

    });
  });

  describe('when input is baz', () => {
    beforeAll(() => {
     input = 'baz';
    });        

    it('does something different', () => {

    });
  });
});

Use a beforeAll to set variables in a parent beforeEach.

Building on @Noah's own answer, I thought I would share our final solution with using this as well.

describe( "Logging in", () => { 
  beforeEach( () => login( this.password ) ); // Steps are same for all so re-use but use different password.

  describe( "when password is incorrect", () => {
    beforeAll( () => this.password = "INCORRECT PASSWORD" );

    it( "doesn't log in.", () => {
      // Your assertion(s).
    } );
  } );

  describe( "when password is correct", () => {
    beforeAll( () => this.password = "CORRECT PASSWORD" );

    it( "logs in successfully.", () => {
      // Your assertion(s).
    } );
  } );
} );