Immutable data does not necessarily let you answer the "what state does this value hold" question easier than mutable data.
Imagine you've got an immutable List. x.append(blah) does not mutate x but instead it returns a new list with blah at the end. If you want to know the state of this new list, you need to know the state of x. You still chase a chain of operations to figure out what your data can look like at some program point.
You get the advantage that mutation cannot be hidden inside of functions, but this is achieved just fine with "const" or whatever.
Imagine you've got an immutable List. x.append(blah) does not mutate x but instead it returns a new list with blah at the end. If you want to know the state of this new list, you need to know the state of x. You still chase a chain of operations to figure out what your data can look like at some program point.
You get the advantage that mutation cannot be hidden inside of functions, but this is achieved just fine with "const" or whatever.