Is the "return" command here does what I think it does?

What I want to do is to read the sensor values into temporary variables (the floats) and only give these values to my struct if they arent NaN. If they are NaN I want the loop run again, until they are not, then give the values to my struct.

void loop() {
  float humidity = dht.readHumidity();
  float temperature = bmp280.readTemperature();

  humidity = dht.readHumidity();
  temperature = bmp280.readTemperature();

  if(isnan(humidity) || isnan(temperature)){
      return;   // <- does this jumps back to the beginning of the loop() ?
    }

// the variables of my struct
  weatherDataPackage.temperature = temperature;
  weatherDataPackage.humidity = humidity;

// and here come a commands that sends the struct via radio and puts the esp8266 intro 1 min sleep...

}

"return" exits from the loop function, which is called again immediately.

So the effect is similar, but not identical to "jump back to the beginning".

Can I call the loop function inside in it? Like:

void loop(){
//some code

loop();

//other code...
}

There is no reason to do that. If you try, it will crash.

tosoki_tibor:
Can I call the loop function inside in it? Like:

void loop(){
//some code

loop();

//other code...
}

That is legal, and is called recursion. It is a very important construct in programming. It is also very dangerous. Just like an infinite loop can cause a program to come to a halt and never progress, infinite recursion will cause a program to crash. You must specifically design a function properly in order to be able to use recursion in it without causing a crash.