pud*_*n13 4 javascript resharper-9.0
我编写了一个带有布局的JavaScript代码,如下所示:
function MyObject() {
this.doSomething(){
someSubRoutine();
}
function someSubRoutine(){
//Sub-routine code here
}
}
Run Code Online (Sandbox Code Playgroud)
ReSharper警告我
函数'someSubRoutine'在声明之前使用
确实在声明函数之前使用了该函数,但ReSharper是否建议我在使用之前声明我的函数?我认为由于JavaScript的提升能力,这不会是一个问题.我应该遵循这个建议还是继续忽略它?
ReSharper可能会使用JSLint(或JSHint),这些linting工具通常会警告这种做法.
这个问题归结为一个名为"吊装"的主题,已经过大量讨论(例如,Sitepoint).在某些情况下,在JS解释器有机会声明它之前使用方法或变量是可能的......所以"最佳实践"是在第一次使用之上声明某个地方.
编辑: 以下是提升可能导致意外副作用的示例:
var showState = function() {
console.log("Idle");
};
function showState() {
console.log("Ready");
}
showState(); // output: Idle
Run Code Online (Sandbox Code Playgroud)
这是因为JS解释器在运行时使用hoisting来创建以下内容:
function showState(){ // moved to the top (function declaration)
console.log("Ready");
}
var showState; // moved to the top (variable declaration)
showState = function(){ // left in place (variable assignment)
console.log("Idle");
};
showState();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |