Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #34432

Testing the “null” value (was: In-Band Escape Values)

Path csiph.com!aioe.org!news.mb-net.net!open-news-network.org!.POSTED.p200300788f0f0301ae8112fffe10829f.dip0.t-ipconnect.de!not-for-mail
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups comp.lang.javascript
Subject Testing the “null” value (was: In-Band Escape Values)
Date Wed, 03 Jan 2018 02:22:23 +0100
Organization PointedEars Software (PES)
Lines 69
Message-ID <2416455.mvXUDI8C0e@PointedEars.de> (permalink)
References <escape-values-20180101185120@ram.dialup.fu-berlin.de>
Reply-To Thomas 'PointedEars' Lahn <cljs@PointedEars.de>
Mime-Version 1.0
Content-Type text/plain; charset="UTF-8"
Content-Transfer-Encoding 8Bit
Injection-Info gwaiyur.mb-net.net; posting-host="p200300788f0f0301ae8112fffe10829f.dip0.t-ipconnect.de:2003:78:8f0f:301:ae81:12ff:fe10:829f"; logging-data="22363"; mail-complaints-to="abuse@open-news-network.org"
User-Agent KNode/4.14.2
X-Face %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&.<b';Md8`dH6iqhT)6C^.Px|[=M@7=Ik[_w<%n1Up"LPQNu2m8|L!/3iby{-]A+#YE}Kl{Cw$\U!kD%K}\2jz"QQP6Uqr],./"?;=4v
X-User-ID U2FsdGVkX19pPcBE2w+nZbpNwsr8ECEL4gLs+tQfnjqrfVZV2XIsvQ==
Cancel-Lock sha1:Rz3iU+COQup+BfQPQ9gAVK8ndm4=
Face iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg==
Xref csiph.com comp.lang.javascript:34432

Show key headers only | View raw


Stefan Ram wrote:

>   What I cannot follow is the idea of nearly everyone that
>   there is something wrong about »typeof null« being »"object"«.

When there were no strict comparison, it was harder to test whether a value 
referred to an object, because “typeof x”, with “x” representing the value, 
would be "object" regardless whether the value referred to an object or was 
“null”.  This required at least

  typeof x == "object" && x == null

to test for the “null” value.

Nowadays (since implementations of ECMAScript Ed. 3) we have the “===” and 
“!==” operators, so the issue is only one of backwards compatibility, as

  x === null

and

  x !== null

will not compile in earlier implementations.  The only workaround I know is 
using eval() to determine whether the operators are supported, which 
decreases the efficiency of code and does not run with “Content-Security-
Policy” without the value “script-src unsafe-eval” (default).
 
>   In programming, people sometimes seem to use what in this post
>   I call an "in-band escape value" (IBEV).

Yes, you are known to make up your own terminology and universe, however 
unnecessarily complicated and nonsensical it may be.
 
>   An in-band escape value formally has a certain type, while
>   semantically it does not have this type.

That is such a nonsense, it is not even wrong.
 
>   For example, »NaN« (»this.NaN«) is the in-band escape value
>   of the type »number«.

No, it is not.  The property “this.NaN” by specification only exists if 
“this” refers to the global object.

<http://PointedEars.de/es-matrix/?filter=NaN#features-table>

>   »undefined« is the general escape value for every value.

Not even wrong.
 
>   »null« is an in-band escape value for objects, so formally
>   its type is »object«, while semantically it means, "not an
>   object".

See above.

Also, “not an object” does not necessarily mean “null”: it can also mean a 
primitive value.

  /* true */
  typeof 42 != "object"
 
> [further misconceptions and fallacies]

-- 
PointedEars
FAQ: <http://PointedEars.de/faq> | <http://PointedEars.de/es-matrix>
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail

Back to comp.lang.javascript | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Testing the “null” value (was: In-Band Escape Values) Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-01-03 02:22 +0100
  Re: Testing the null value (was In-Band Escape Values) John G Harris <niam@jghnorth.org.uk.invalid> - 2018-01-04 10:32 +0000

csiph-web