I think this is not true. If it was this way, there would be no way to read data from an API. read('https://news.ycombinator.com') will not return the same output everytime.
And it would not be possible to keep track of anything. No counting, no transformation of data, nothing.
Googling a bit indicates that people use a mental trick and define the state part of the input of the function. So in terms of getUrl() the current state of the internet is part of the input of the function. And when counting something, the function gets the old sum as the input and outputs the new sum which gets stored in a different place than the old sum so the old sum "did not change".
I see a lot of overhead coming from these mental gymnastics with no benefit. Any short example that shows a benefit?