Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是JSHint';s";函数声明不应放在块中;太宽了?_Javascript_Function_Block_Jshint - Fatal编程技术网

Javascript 是JSHint';s";函数声明不应放在块中;太宽了?

Javascript 是JSHint';s";函数声明不应放在块中;太宽了?,javascript,function,block,jshint,Javascript,Function,Block,Jshint,我理解为什么将函数声明放在条件块中是不好的,但是有没有理由建议不要将函数声明放在独立的块中(除了因为JS没有块范围而可能导致混淆的论点之外): 我这样做的原因是为了在崇高的文本中实现代码任意部分的代码折叠。不,它不是“宽泛的”。这是语言语法。上面的代码会导致未指定的行为,并且可能在不同的引擎中工作不一致。它在大多数引擎中的工作方式与您期望的一样,但ECMAScript规范在其语法中禁止它 请改用表达式: { var foo = function(){}; // legal ECMAScri

我理解为什么将函数声明放在条件块中是不好的,但是有没有理由建议不要将函数声明放在独立的块中(除了因为JS没有块范围而可能导致混淆的论点之外):

我这样做的原因是为了在崇高的文本中实现代码任意部分的代码折叠。

不,它不是“宽泛的”。这是语言语法。上面的代码会导致未指定的行为,并且可能在不同的引擎中工作不一致。它在大多数引擎中的工作方式与您期望的一样,但ECMAScript规范在其语法中禁止它

请改用表达式:

{
   var foo = function(){}; // legal ECMAScript, unlike the declaration
}
引用注释规范:

注意:已知几个广泛使用的ECMAScript实现支持将FunctionDeclaration用作语句然而,在应用于此类函数声明的语义中,实现之间存在着显著且不可调和的差异。由于这些不可调和的差异,将FunctionDeclaration用作语句会导致代码在实现之间无法可靠地移植。建议ECMAScript实现禁止使用FunctionDeclaration,或者在遇到此类用法时发出警告。ECMAScript的未来版本可能会定义在语句上下文中声明函数的替代可移植方法。 将变量与函数表达式一起使用


至于崇高的文本,您可以折叠注释,例如。

回答得很好,谢谢。你能给我举一个在Submite中用注释注释折叠的例子吗?@Hans这取决于Submit的版本,它与你在这里问的问题无关,所以我担心它会把答案弄得一团糟。然而,谷歌搜索会产生相当有希望的结果和答案。我只问过b/c是你提出来的。事实证明,ST本身不支持带注释注释上的代码折叠,这就是我求助于块语句的原因。
{
   var foo = function(){}; // legal ECMAScript, unlike the declaration
}