首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法访问javascript中的全局变量

无法访问javascript中的全局变量
EN

Stack Overflow用户
提问于 2017-01-17 06:28:13
回答 5查看 2.3K关注 0票数 1

据我所知,上述函数中声明的每个变量都被视为全局变量。但在我的例子中,我无法访问显示undefined的变量。这是小提琴

代码:

代码语言:javascript
运行
复制
__getUserByRmId('sun1')
var firstCallFlag = 1;
function __getUserByRmId(rmId) {
    console.log(firstCallFlag); 
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-17 06:30:28

这是因为变量是在调用函数之后定义的。

你可以做到这一点。看起来不错。

代码语言:javascript
运行
复制
var firstCallFlag = 1;
__getUserByRmId('sun1')

function __getUserByRmId(rmId) {
    console.log(firstCallFlag); 
}

顺便说一句,提升是JavaScript的默认行为,将所有声明移到当前作用域的顶部。所以,像这样的东西应该能起作用。

代码语言:javascript
运行
复制
 firstCallFlag =1 ;
__getUserByRmId('sun1')

function __getUserByRmId(rmId) {
    console.log(firstCallFlag); 
}
var firstCallFlag;

但是,JavaScript初始化没有悬挂。因此,下面这样的代码将考虑未定义的变量firstCallFlag。

代码语言:javascript
运行
复制
__getUserByRmId('sun1')

function __getUserByRmId(rmId) {
    console.log(firstCallFlag); 
}
var firstCallFlag = 1; 
票数 3
EN

Stack Overflow用户

发布于 2017-01-17 06:29:58

有一个术语功能与变量提升。当您创建这样一个function和一个带有var的变量时,它们移动到了所有变量的顶部。但functionsfirst出现在variables之前。因此,当您调用function时,它会看到function,而不会看到variable

Engine会将您的代码解析为此,并逐行执行。所以它没有看到variable

代码语言:javascript
运行
复制
function __getUserByRmId(rmId) {
    console.log(firstCallFlag); 
}

__getUserByRmId('sun1')

var firstCallFlag = 1;

您需要在变量声明之后调用函数。

代码语言:javascript
运行
复制
var firstCallFlag = 1;

__getUserByRmId('sun1');

function __getUserByRmId(rmId) {
    console.log(firstCallFlag); 
}        

票数 3
EN

Stack Overflow用户

发布于 2017-01-17 06:30:14

声明变量后调用函数。函数将首先提升变量,然后再提升变量。

代码语言:javascript
运行
复制
var firstCallFlag = 1;
function __getUserByRmId(rmId) {
    console.log(firstCallFlag); 
}
__getUserByRmId('sun1');

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41690359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档