JavaScript 运行 订单问题
JavaScript running order questions
我有一个非常简单的Javascript代码,无法完全理解运行命令和输出。
function f1() {
n = 999;
change = function() {
n = "Barry";
};
return change;
}
var result = f1();
result();
console.log(n)
change();
console.log(n)
输出:
Barry
Barry
据我了解,我定义了一个全局变量n,n = 999。
然后我创建一个函数,它将 globale n 定义为“Barry”。并将此功能分配给更改。 return 这个改变变量。
然后我触发这个f1(),并改变结果。在这个时间点,更改是一个函数,但尚未运行。
所以为什么第一个 Console.log return 我的 Barry?然后更改还没有运行..
您没有在 var
、let
或 const
范围内正确声明变量,因此污染了全局或外部范围。
n
已更改,因为 result === change
和 change
将 n
设置为 Barry
。
此行为的原因在于这一行,
var result = f1(); // n - 999
此时您正在调用内部函数并将 n 设置为 Barry
result(); // n - Barry
我不知道你是怎么直接调用这个函数的。但希望它只是一个伪代码
change(); // n - Barry
也就是说,
result() === change()
why the first Console.log return my Barry? Then change has not runs yet..
是的,您在调用 result()
之后才调用 console.log
。尝试以下操作:
var n, change;
function f1() {
n = 999;
change = function() {
n = "Barry";
};
return change;
}
console.log(n);
var result = f1();
console.log(result === change);
console.log(n);
result();
console.log(n);
change();
console.log(n);
当你调用结果函数时,这里是序列。
function f1(){
//declares n variable
//declares change function
//return change function, and calls it, at this point it changes n to "barry".
}
我有一个非常简单的Javascript代码,无法完全理解运行命令和输出。
function f1() {
n = 999;
change = function() {
n = "Barry";
};
return change;
}
var result = f1();
result();
console.log(n)
change();
console.log(n)
输出:
Barry
Barry
据我了解,我定义了一个全局变量n,n = 999。 然后我创建一个函数,它将 globale n 定义为“Barry”。并将此功能分配给更改。 return 这个改变变量。
然后我触发这个f1(),并改变结果。在这个时间点,更改是一个函数,但尚未运行。
所以为什么第一个 Console.log return 我的 Barry?然后更改还没有运行..
您没有在 var
、let
或 const
范围内正确声明变量,因此污染了全局或外部范围。
n
已更改,因为 result === change
和 change
将 n
设置为 Barry
。
此行为的原因在于这一行,
var result = f1(); // n - 999
此时您正在调用内部函数并将 n 设置为 Barry
result(); // n - Barry
我不知道你是怎么直接调用这个函数的。但希望它只是一个伪代码
change(); // n - Barry
也就是说,
result() === change()
why the first Console.log return my Barry? Then change has not runs yet..
是的,您在调用 result()
之后才调用 console.log
。尝试以下操作:
var n, change;
function f1() {
n = 999;
change = function() {
n = "Barry";
};
return change;
}
console.log(n);
var result = f1();
console.log(result === change);
console.log(n);
result();
console.log(n);
change();
console.log(n);
当你调用结果函数时,这里是序列。
function f1(){
//declares n variable
//declares change function
//return change function, and calls it, at this point it changes n to "barry".
}