Garrett Smith wrote:
Any Java method that takes a String can have null passed to it.

Yes, and this is true for any reference type, not only String.

Yep.  Point is, DOMString is defined as a reference type.

Are you concerned with what can be passed to a method, or what is a String?

The former, of course. The latter really doesn't matter to me very much as the implementor of a DOM binding or of a DOM implementation. All that matters is:

1)  What possible inputs could come in?
2)  What should I do with them?

I don't much care about the data types in ECMAScript apart from their impact on those two points.

In EcmaScript, well, didn't we have a demo here just a few hours ago?
I included four primitives in the demo: null, undefined, number,
string. I forgot boolean. Not only can you pass anything

That's a function of the ECMAScript-to-DOM-implementation bindings, not of the DOM spec itself, for what it's worth.

Put per DOM spec the DOM implementation MUST be able to tell null and any given string value apart when the argument is a DOMString, since DOMString supports null semantics.

However, if a method takes a domstring, why would anyone want to pass
null?

I have no idea, but the DOM spec requires that my DOM implementation handle it. I honestly can't guess why someone would "want" to do all sorts of things with web technologies, yet people do them all the time. I suspect a lot of them do it by copy-pasting other code, lossily.

Wouldn't passing null seem to be a mistake? Just don't do it!

I don't care what you do on your end, honestly. I need to make my end work with all possible inputs. I can't just rely on authors not passing null, because fundamentally I don't trust authors. Given any action that can be performed, they will perform it. And the spec needs to be written in such a way that behavior is defined in all cases, and UAs then need to implement the spec. We're not there now, but that's the goal.

Null is not a String. Not in Java; not in EcmaScript. In both
languages, the Null type has no Name and has only one value - null.

The only question is what happens when null is passed to a method taking DOMString. The semantic question of "what is a String" is not relevant to that issue.

Unlike Java, EcmaScript offers no compiler checks for *anything*.

That's not true, actually. There are plenty of compiler checks in a typical modern ECMAScript implementation. They're just not type-checks.

-Boris

Reply via email to