有没有工具可以找到不在作用域内的方法?
function main(someValue)
{
if(someValue)
{
function TestOne(){}
}
esle
{
function TestTwo(){}
function TestThree(){}
}
//Call of function
TestTwo();
}这里的TestTwo()可能是未定义的,因此希望从庞大的代码库中找到这样的函数。如果有任何工具可以检测,那么这将是快速帮助,应用程序是集成开发环境MVC和VS2010是集成开发环境。
发布于 2016-04-29 02:30:34
TestTwo是否定义取决于您的Javascript版本。它不依赖于if语句的true of false分支是否被跟随。
在ES6之前JavaScript中,这是依赖于实现的,一些浏览器将提升函数声明,因此它将在作用域中。其他人将抛出一个错误。
在现代的JavaScript中,它永远不会被定义,因为函数声明有块作用域,所以函数只在else块的作用域中。
解决方案是无条件地声明您的函数,但仍然在if语句块内根据需要调用它们:
function main(someValue)
{
if(someValue)
{
..
}
else
{
..
}
//Call of function
TestTwo();
function TestOne(){}
function TestTwo(){}
function TestThree(){}
}https://stackoverflow.com/questions/36922695
复制相似问题