You asked a pretty general question. The general purpose answer is that any cross-browser development (even cross-versions of the same browser) requires that you are familiar with which functions are safe in the target browsers, which functions are unsafe in the target browsers, and which of them should only be used when thoroughly testing or detecting a backup function.
While no one will exactly expect the type of difference you saw with the one example you referenced, it is clear that this is a fairly new feature in ECMAScript and it does not execute sequentially in regular browsers, so I would put it in when itās not safe Assume that it works on all versions of Android, even if you saw it on some versions of Android. This means that you should use it only if you have explicitly tested it so that it is reliable in all versions of the browser that you target or develop test functions, and use it only when you know that it present and reliable, or design a safer job.
As I mentioned earlier, this thread contains a bunch of suggested workarounds for the specific problem you were talking about.
I donāt know the detailed written materials that documented in advance the details of the differences between the different versions of the Android browser. Since this is open source, there are probably notes for developers and some release notes, but it will probably be like finding a needle in a haystack and may not even contain what you want. Itās rare for any developer to have such detailed information. Usually we donāt get this level of detail from any of the existing desktop browsers or iOS browsers, and even if you were on the development team itself, you would probably only see some of this information. I donāt think you will find official documentation that covers what you want.
You need to learn how to relate to more unknowns and which areas are āsafeā, which areas require extensive testing before use, and which areas are too risky. Even when you do this, you will find Android errors in some version that touch you. This is just the nature of building on someone elseās platform. At least the set of Android browsers is much simpler than trying to target all desktop browsers from IE6 to IE9, Firefox 3 to 5, Safari 3 to 5, Opera 9-11, Chrome 9 to 12, all Android, all iOS and use HTML5, if available, what I'm working on.
As soon as you go through this wringer a couple of times, you will realize that if the new language / library has any risk, you should not use it at all, if it is not absolutely central for what you are trying to accomplish and then you have to check hell. If this is like getting the length of an associative array, which is just convenient for the programmer, then it is probably easier to stick to a workaround that is guaranteed to be safe and just won't waste your time at any risk of browser support.