据我所知,上述函数中声明的每个变量都被视为全局变量。但在我的例子中,我无法访问显示undefined
的变量。这是小提琴
代码:
__getUserByRmId('sun1')
var firstCallFlag = 1;
function __getUserByRmId(rmId) {
console.log(firstCallFlag);
}
发布于 2017-01-17 06:30:28
这是因为变量是在调用函数之后定义的。
你可以做到这一点。看起来不错。
var firstCallFlag = 1;
__getUserByRmId('sun1')
function __getUserByRmId(rmId) {
console.log(firstCallFlag);
}
顺便说一句,提升是JavaScript的默认行为,将所有声明移到当前作用域的顶部。所以,像这样的东西应该能起作用。
firstCallFlag =1 ;
__getUserByRmId('sun1')
function __getUserByRmId(rmId) {
console.log(firstCallFlag);
}
var firstCallFlag;
但是,JavaScript初始化没有悬挂。因此,下面这样的代码将考虑未定义的变量firstCallFlag。
__getUserByRmId('sun1')
function __getUserByRmId(rmId) {
console.log(firstCallFlag);
}
var firstCallFlag = 1;
发布于 2017-01-17 06:29:58
有一个术语功能与变量提升。当您创建这样一个function
和一个带有var
的变量时,它们移动到了所有变量的顶部。但functions
在first出现在variables
之前。因此,当您调用function
时,它会看到function
,而不会看到variable
。
Engine会将您的代码解析为此,并逐行执行。所以它没有看到variable
。
function __getUserByRmId(rmId) {
console.log(firstCallFlag);
}
__getUserByRmId('sun1')
var firstCallFlag = 1;
您需要在变量声明之后调用函数。
var firstCallFlag = 1;
__getUserByRmId('sun1');
function __getUserByRmId(rmId) {
console.log(firstCallFlag);
}
发布于 2017-01-17 06:30:14
声明变量后调用函数。函数将首先提升变量,然后再提升变量。
var firstCallFlag = 1;
function __getUserByRmId(rmId) {
console.log(firstCallFlag);
}
__getUserByRmId('sun1');
https://stackoverflow.com/questions/41690359
复制相似问题