Thank you very much! That rule is exactly what I wanted and I'm surprised I could not find it before.
On Wednesday, 13 July 2016, 長島徹 <[email protected]> wrote: > Safari has not been broken. This is a correct behavior in ES5. ES5 > disallows function declarations on blocks (except function bodies). On the > other hand, ES2015 (ES6) has relaxed this restriction. > > I'd like to recommend a use of no-inner-declarations > <http://eslint.org/docs/rules/no-inner-declarations> rule. > This rule would disallow such function declarations. > > > 2016年7月14日(木) 4:59 Robin Ward <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>>: > >> Recently we broke Safari in production because code I'd written that >> looked like this: >> >> ```javascript >> if (true) { >> function test() { >> } >> test(); >> } >> ``` >> >> In Chrome and Firefox the above works well, but in Safari you get an >> error: `SyntaxError: Strict mode does not allow function declarations in a >> lexically nested statement.` >> >> This can be fixed by changing the code to this: >> >> >> ```javascript >> if (true) { >> const test = function() { >> } >> test(); >> } >> ``` >> >> I looked for a rule in ESLint to prevent the first (bad) code from >> running but I can't find one. The closest seems to be `func-style` which >> locks you into one or the other, but what I'm actually looking for is the >> ability to raise an error when Safari would. >> >> Is there anything in ESLint to do this? Is there a way to propose this if >> not? >> >> -- >> You received this message because you are subscribed to the Google Groups >> "ESLint" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] >> <javascript:_e(%7B%7D,'cvml','eslint%[email protected]');>. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "ESLint" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
