使用尚未声明的变量
Using a variable that has yet to be declared
我在理解 Javascript 称为提升的引擎技术时遇到问题。
我试图在我的文件顶部创建一个 var
以快速访问和编辑,但我想使用一个尚未声明的变量。
第一次尝试:
var easy_to_edit_value = "some text " + a_yet_to_be_defined_var;
//imagine loads of code so its hard to find the correct funtion to edit the log
function my_function (a_yet_to_be_defined_var){
console.log(easy_to_edit_value);
}
my_function("more text");
这会在第 1 行产生一个错误,因为 a_yet_to_be_defined_var
没有定义。
看了这个 post 之后:post-by-apsillers 我又试了一次,但这次声明了没有值的 var(所以它已知但未定义,直到在 futheron 某处声明)
var a_yet_to_be_defined_var; // now its known so this error is gone
var easy_to_edit_value = "some text " + a_yet_to_be_defined_var;
function my_function (a_yet_to_be_defined_var){
console.log(easy_to_edit_value);
}
my_function("more text");
//still undefined
//new attempt with a fresh var being set in the function before being called
var new_var;
var easy_to_edit_value = "some text " + new_var;
function my_function2 (a_yet_to_be_defined_var2){
new_var = a_yet_to_be_defined_var2;
console.log(easy_to_edit_value);
}
my_function2("more text");
//still undefined
但这会输出:some text undefined
我期待 some text more text
因为我在请求它之前填充了 var。
请注意这些函数不是 运行 使用 my_function("something")
而是由此触发的:client.on('message', my_function);
,我已经看到相关问题的箭头函数解决方案,但我不是确定我如何让它在这里工作。
有可能实现这个功能吗?
您需要在函数内部重新声明变量:
var new_var;
var easy_to_edit_value = "some text " + new_var;
function my_function2(a_yet_to_be_defined_var2) {
new_var = a_yet_to_be_defined_var2;
easy_to_edit_value = "some text " + new_var;
console.log(easy_to_edit_value);
}
my_function2("more text");
如果一个变量改变,其他变量将不会根据新值更新。那种编程需要真正高级的编译器,但没有多少人愿意这样做。程序员必须自己更新变量。
不要定义一个名为 easy_to_edit_value
的值,而是将其更改为一个名为 easy_to_call_function
的函数,它将 return "some text "
与 [=14= 的当前值连接起来].
一旦分配了(var
或 let
)变量,每次都必须重新分配或重新计算。
let new_var;
const easy_to_call_function = () => "some text " + new_var;
function my_function2(a_yet_to_be_defined_var2) {
new_var = a_yet_to_be_defined_var2;
console.log(easy_to_call_function()); // Call the function
}
my_function2("more text");
我在理解 Javascript 称为提升的引擎技术时遇到问题。
我试图在我的文件顶部创建一个 var
以快速访问和编辑,但我想使用一个尚未声明的变量。
第一次尝试:
var easy_to_edit_value = "some text " + a_yet_to_be_defined_var;
//imagine loads of code so its hard to find the correct funtion to edit the log
function my_function (a_yet_to_be_defined_var){
console.log(easy_to_edit_value);
}
my_function("more text");
这会在第 1 行产生一个错误,因为 a_yet_to_be_defined_var
没有定义。
看了这个 post 之后:post-by-apsillers 我又试了一次,但这次声明了没有值的 var(所以它已知但未定义,直到在 futheron 某处声明)
var a_yet_to_be_defined_var; // now its known so this error is gone
var easy_to_edit_value = "some text " + a_yet_to_be_defined_var;
function my_function (a_yet_to_be_defined_var){
console.log(easy_to_edit_value);
}
my_function("more text");
//still undefined
//new attempt with a fresh var being set in the function before being called
var new_var;
var easy_to_edit_value = "some text " + new_var;
function my_function2 (a_yet_to_be_defined_var2){
new_var = a_yet_to_be_defined_var2;
console.log(easy_to_edit_value);
}
my_function2("more text");
//still undefined
但这会输出:some text undefined
我期待 some text more text
因为我在请求它之前填充了 var。
请注意这些函数不是 运行 使用 my_function("something")
而是由此触发的:client.on('message', my_function);
,我已经看到相关问题的箭头函数解决方案,但我不是确定我如何让它在这里工作。
有可能实现这个功能吗?
您需要在函数内部重新声明变量:
var new_var;
var easy_to_edit_value = "some text " + new_var;
function my_function2(a_yet_to_be_defined_var2) {
new_var = a_yet_to_be_defined_var2;
easy_to_edit_value = "some text " + new_var;
console.log(easy_to_edit_value);
}
my_function2("more text");
如果一个变量改变,其他变量将不会根据新值更新。那种编程需要真正高级的编译器,但没有多少人愿意这样做。程序员必须自己更新变量。
不要定义一个名为 easy_to_edit_value
的值,而是将其更改为一个名为 easy_to_call_function
的函数,它将 return "some text "
与 [=14= 的当前值连接起来].
一旦分配了(var
或 let
)变量,每次都必须重新分配或重新计算。
let new_var;
const easy_to_call_function = () => "some text " + new_var;
function my_function2(a_yet_to_be_defined_var2) {
new_var = a_yet_to_be_defined_var2;
console.log(easy_to_call_function()); // Call the function
}
my_function2("more text");