Re:ImmortalDB – A resilient key-value store for the browser
by arilotter on Monday January 28, 2019 @11:36PM
(#19023804)
Your snippet doesn't fail.
This one does
console.log('this doesn't work!')
(false ? console.log : console.error)('this will fail with a TypeError')
>> Uncaught TypeError: console.log(...) is not a function
console.log('this works!')
;(true ? console.log : console.error)('hello world')
Re:ImmortalDB – A resilient key-value store for the browser
by recursive on Monday January 28, 2019 @06:46PM
(#19022289)
So I tested this out in Firefox. I think you're wrong. I never see 'hello world' even if I remove all the whitespace between the functions.
Re:ImmortalDB – A resilient key-value store for the browser
by munk-a on Monday January 28, 2019 @06:20PM
(#19022068)
There is a reason why that issue with IIFEs can be hit, and it's because you've omitted some semicolons - granted they are the sort that most people omit.
Since everything in js is a statement the correct semi-colon syntax for the above is
function hasSemicolons() {
console.log('hello world');
};
(function() {
console.log('this is broken, JS will call hasSemicolons()');
})();
Re:ImmortalDB – A resilient key-value store for the browser
by recursive on Monday January 28, 2019 @06:51PM
(#19022314)
The ECMAScript specification (https://www.ecma-international.org/publications/files/ECMA-S...) has statements in a separate chapter from function declarations. (Chapter 14) Furthermore, the function declaration grammar does not contain a semi-colon, unlike other statements.
See also: https://stackoverflow.com/questions/1873983/what-does-the-le...