labelpseudogoto labelj is the simplest jump: it goes to a label, always, with no condition attached. The branch instructions jump only when some comparison holds; j just goes, every time. The form is j label.
This is an unconditional jump (also called a goto), and it is the piece that completes loops and choices. Consider a basic loop: a conditional branch at the top decides when to exit, the loop body runs, and then a j at the bottom jumps straight back to the top to go around again. Without that jump back, the code would simply run off the end and never repeat. Likewise in an if/else, a j at the end of the if-block hops over the else-block so the two alternatives do not both run.
j keeps no return address — it goes and does not remember where it came from. That is exactly what distinguishes it from a function call. Use j for moving around *within* your code (loops, skipping over a block); use call when you intend to come back. Choosing between them is really choosing whether returning matters.
Under the hood j is a pseudo-instruction for jal zero, label — a jump-and-link that throws the return address away by writing it into the always-discarding zero register, leaving just the jump. The example jumps back to the top of a loop.
jal zero, label
A pseudo-instruction: the assembler turns it into the real instruction(s) above.
j loop # go back to the top of the loop