![]() |
1
72
问题是,无论您是否意识到,javascript都会无形地将所有var声明移动到函数范围的顶部。 所以如果你有这样的功能
警报窗口将包含未定义的。因为在内部,它被改为:
这叫做“吊装”。 Crockford如此强烈地提倡将var声明放在首位的原因是,它使代码明显地匹配它将要做的事情,而不是允许发生不可见和意外的行为。 |
![]() |
2
8
基本上是在javascript块中(
在函数的任何地方引入的变量在函数的任何地方都可见。 例如:
在具有块范围的语言中,建议在第一次使用时声明变量,但由于javascript没有块范围,因此最好在函数顶部声明函数的所有变量。 检查这个 article . |
![]() |
3
6
缺少块范围解释了以下代码:
在大多数C样式(如语法)语言中,
|
![]() |
4
4
是的,这意味着在函数的开头声明所有变量。无论您是想在一行还是多行中进行,这都是一个选择。 你提到的段落解释了原因。javascript变量只有函数级作用域。如果在if/while/for块中声明相同的变量,则该变量将被新值覆盖,因为该块不具有新的作用域。这与Java等语言不同。为了避免这样的意外,请在函数开始时声明要在函数中使用的所有变量,这样您就不会意外地“重新声明”和ything。 |
![]() |
oktapodia · Lint错误objectiveC 7 年前 |
![]() |
Beginner · Lint-失败:生成失败,出现异常 7 年前 |
![]() |
Dylan Ju · eslint不处理多个包。json 7 年前 |
![]() |
radbrawler · “{}”的Visual Studio代码格式 7 年前 |
![]() |
Gotama · 删除表时出现受限API lint错误。房间持久性 7 年前 |
![]() |
Dan Cantir · ESLint规则禁止JSX中的对象文字 7 年前 |
![]() |
Kevin Robatel · AS 3.0 Beta 1的任务崩溃 7 年前 |