为什么变量没有未定义?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么变量没有未定义?相关的知识,希望对你有一定的参考价值。
我是javascript的初学者,我想知道为什么下面的代码片段提示 "成功",即使没有提供 "消息 "的定义供函数使用。
var message;
function alertMessage() {
alert(message);
}
message = "Successful";
alertMessage();
下面的代码返回未定义,所以我假设函数与此有关?
var message;
alert(message);
message = "Successful";
让我们逐行看看这段代码是怎么做的。
var message; // 1
function alertMessage() { // 2
alert(message);
}
message = "Successful"; // 3
alertMessage(); // 4
1:声明一个名为 message
.
2: 声明一个名为 alertMessage
使用该变量的函数。请注意,这个函数是 不 在这一点上还没有执行。这只是 宣称.
3:设置变量的值。message
到 "Successful"
.
4:调用函数。现在函数被执行。请注意,变量 message
已设置为 "Successful"
在上一步中,所以在函数执行时,它有那个值--这就是为什么你看到它。
现在,让我们看看第二个代码片段。
var message; // 1
alert(message); // 2
message = "Successful"; // 3
这里发生了什么。
1: 声明一个名为 message
. 它还没有被设置为一个值,所以它是。undefined
此时。
2:打电话给 alert
函数,变量为 message
. 这将显示 undefined
因为 message
是 undefined
此时。
3:设置变量 message
价值 "Successful"
. 这无助于呼吁 alert
在第2步--到这里的时候已经完成了。
重要的是要记住: 程序是一个命令列表,从上到下执行。如果你想知道一个程序是做什么的,就从最上面开始,一行一行地读。行中的内容是一个接一个地发生的。不是同时发生的,也不是按不同的顺序发生的。
一个函数不是在它被声明的时候被执行的。它在被调用时才被执行。
在第一种情况下,步骤如下。
- 消息被声明但未定义
- 函数被声明但没有被执行。
- 给变量 message 分配了一个值
- 当信息的值为
在第二种情况下
- 信息已声明但未定义
- 函数(警报)被执行,你会看到未定义的
- 然后给信息赋值
如果你仔细想想,函数就是一个蓝图,在你 "调用 "它之前,它不会被使用。
在第一个例子中,你先定义了消息,然后你 "调用 "了这个函数,它的工作原理就像预期一样。你首先定义了消息,然后你 "调用 "了这个函数,它的工作就像预期的那样。
在第二个例子中,message没有值->;它是空的,这就是为什么它是 "undefined".如果你把它设置为例如message="bla bla bla",它就不会是undefined。
这个解释可以吗?
在第二个例子中,你在消息被设置为成功之前就调用了 alert。
执行顺序
声明信息并将其设置为未定义。
显示未定义的信息的呼叫提醒
设置信息=成功
第一个例子
声明信息并将其设置为未定义。
声明一个在执行时调用警报信息的函数。
请注意,在调用
将信息设置为成功
调用上述函数
你可以通过设置 message = "error" 来绕过它。
以上是关于为什么变量没有未定义?的主要内容,如果未能解决你的问题,请参考以下文章
getSupportFragmentManager() 在活动扩展片段中未定义
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”