butchler
So the main target audience for selectedoption is probably people not using a framework, and using no or little JavaScript. That audience probably would want selectedoption to "just work" without having to manually call a function to reset things. So while option 1 seems like a reasonable option to me personally as someone who mainly works with React, it's probably not what most people using selectedoption would want.
Option 2 just has too much potential for introducing hard to debug and hard to fix performance issues, so I feel like it's automatically not the best choice. Its main advantage is that it's probably the most straightforward to understand/explain.
Option 4 would help with the performance issues, but it sounds like it would be a nightmare for browsers to implement. It would also be a bit difficult to explain to devs how exactly it works and what edge cases need to be considered (like mutating the selectedoption "fork" potentially causing issues).
So by process of elimination option 3 seems like the best to me. It solves the performance issues but it's still pretty easy to understand/explain. It's main disadvantage seems to be that from the perspective of code running synchronously it's possible for the selectedoption and option to get out of sync, but 1) it's a bit hard to imagine a practical use case for needing to do this kind of comparison and 2) simply waiting until the next microtask before doing the comparison would probably be an easy fix even if this is a problem in some cases.
For all of these options, it might be useful for there to be some way to intercept the default behavior. For example maybe there could be some event such that calling .preventDefault() inside an event handler has the side effect of preventing the selectedoption from being reset, if resetting it is not desired. Of course you don't need to use selectedoption at all if the automatic resetting is not desired, but maybe there will be some cases where you only want to make an exception in a few cases but generally do want the selectedoption default behavior.
くしゃみをする度に 頭の中で何かが 海ぶどうを噛み潰したような プチっと弾ける感触があって その後 頭皮の下を暖かい感覚が じんわりと広がっていく それはたぶん ゆっくりと死んでいるのだ。
Rough translation:
"Every time I sneeze, it feels like something goes POP inside my head and bursts like a sea grape, and afterward a warm sensation starts slowly spreading from under my scalp. I think this means I'm slowly dying."
It's the last post on the blog, from 2010...
Another thing that Montreal has that they don't have where I live is tons of Summer festivals. While we were there was some kind of festival put on by a clown school and we got to see basically a mini, outdoor Cirque du Soleil performance for free. I don't even usually like things like that very much, but it definitely helped give the experience of a "charming, European" city =P