Path: csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse Newsgroups: comp.lang.javascript Subject: Re: x === x Date: Tue, 30 May 2017 14:34:29 +0100 Organization: A noiseless patient Spider Lines: 34 Message-ID: <874lw231ui.fsf@bsb.me.uk> References: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: mx02.eternal-september.org; posting-host="100ceef5a96f3ad6ffee895ab2330e2d"; logging-data="16000"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX193p73CGcL4OkH/NC4uQHp5lLcX+/qlE9c=" Cancel-Lock: sha1:fH7+cLoq0JO/YB3mrMm2pJ5y75A= sha1:/xLUGS+jqvBPWZyD+fVT2HNhcII= X-BSB-Auth: 1.b138b0f3c0df95d82c3e.20170530143429BST.874lw231ui.fsf@bsb.me.uk Xref: csiph.com comp.lang.javascript:33440 ram@zedat.fu-berlin.de (Stefan Ram) writes: > In mathematics, usually, when »...« is a certain term, we have > > ... === ... > > for the same term left and right. > > In JavaScript, this does not always hold for expressions, albeit > possibly sometimes for different reasons: > > Math.random() === Math.random() > NaN === NaN > [] === [] > ( {} === {} ) > ( ()=>0 )===( ()=>0 ) > > In the first case, we cannot be sure that it will evaluate to > »false«, but this is is possibly. > > The last three cases are similar, but it is also remarkable > how one needs to add parentheses: no parens required for the > array, outer parens for the objects, What's wrong with {} === {}? > and two pairs of parens for the functions. This one makes sense. You are much more likely to want === in the body of the arrow function so you want the grammar to cause (x) => x === ... to mean (x) => (x === ...) rather than ((x) => x) === ... -- Ben.