搜索 JSLint 错误“在定义之前使用”我发现了这些:
- JSLint:在定义错误之前使用函数
- 函数在定义之前使用 - JSLint
- JSLint:在定义之前使用
- jsLint 错误:“somefunction() 在定义之前被使用”</a>
- jslint - 我们应该容忍错误的定义吗?
问题
这些都没有回答为什么会显示错误。
细化
根据ECMA-262 规范,函数在执行开始之前进行评估,因此使用关键字声明的所有函数function
都可用于声明它们的位置的所有代码独立(假设它们在该范围内可访问)。
这也称为提升。
Douglas Crockford 似乎认为不管提升效果如何,最好在使用它的代码之前声明每个函数。
根据StackOverflowNewbie在他的问题中的说法,这会引发一些代码组织问题。更不用说像我这样的一些人更喜欢在 main/init 代码下声明他们的函数。
在这些问题上,有一些方法可以避免或修复错误,例如使用函数表达式与函数声明。但他们都没有告诉我错误的原因。甚至没有Crockford 的网站。
问题)
为什么在声明之前调用函数是错误的,即使它是使用function
关键字声明的?
在 JSLint 上下文中使用函数表达式而不是函数声明会更好吗?如果首选一个,为什么?
笔记
不寻找类似的答案:
- 克罗克福德是个暴君
- 只是克罗克福德的意见
谢谢 :*