Fisher-Yates shuffle in JavaScript
Mostly just style
Why add the variable len inside the for loop. It is a constant so put it outside the loop as one.
The variable result is in function scope. Use var rather than let.
The variable rand does not change inside the loop so it should be a const.
The expression to get the random number does not need the (...) as operator precedence ensures that the | is applied correctly.
Add some spaces between operators for readability. eg (Math.random()*str.length)|0; is better as (Math.random() * str.length) | 0
One issue
The only problem is that you have one to many iterations. The last random value will always be to select from a 1 character string, so it is not needed. You need only iterate the string length minus one.
The rewrite
How I would rewrite your code. I personally don't like putting the let inside the for loop, so I put the declaration in the scope above. This is because for loops can have a lot of noise (clutter) and that reduces it a bit. Also the function is so short and simple variable names can be shortened without problem, I would make rand just the r.
function fisherYates(str) {
  var i, result = '';
  const len = str.length - 1;
  for (i = 0; i &lt; len; i ++) {
    const r = Math.random() * str.length | 0;
    result += str[r];
    str = str.slice(0, r) + str.slice(r + 1);
  }  
  return result + str;
}