What are hash fragments?
A hash fragment is an identifier that comes after the Uniform Resource Indicator, typically separated with a ‘#’ hash. The resource indicated after the hash is subordinate to the prior URI, and thus it loads the full page before it locates the hash.
In the absence of any resource that matches the fragment after the hash, the page will still have loaded. For example, both of these URLs will take you to the homepage of my website:
Since the hash fragment is subordinate to the main resource, Google chooses only to count the URI. There is no parsing after the URI in this instance, and thus it has no SEO impact.
What about Ajax Hashes?
Google published Ajax Crawling Recommendations on hash fragments, which is deprecated as of October 2015. However, the principles behind Ajax remain the same, so the guidelines are likely similar.
Therefore, if you’re going to use Ajax, the appropriate recommendation is to use ‘#!’ for your hashes, so that Google can crawl this if necessary.