Javascript JS-重新分配字符串
我现在正在研究JS,并将其与VB.Net进行比较 我想给我之前声明的字符串添加一个值 在VB.Net中,它将如下所示:Javascript JS-重新分配字符串,javascript,Javascript,我现在正在研究JS,并将其与VB.Net进行比较 我想给我之前声明的字符串添加一个值 在VB.Net中,它将如下所示: Dim MyString as String Mystring = "Test" let Mystring; Mystring = 'test'; 在JS中,它应该是这样工作的: Dim MyString as String Mystring = "Test" let Mystring; Mystring = 'test'; 但是
Dim MyString as String
Mystring = "Test"
let Mystring;
Mystring = 'test';
在JS中,它应该是这样工作的:
Dim MyString as String
Mystring = "Test"
let Mystring;
Mystring = 'test';
但是,在以下代码中,这不适用于我:
var https = require('https');
let MyString = 'null'; //String that I want to declare
var request = https.request(options, function (res) { //I do a Get Request to get a String from an URL
var data = '';
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
MyString = data;
console.log(MyString); //Here I get the URL Content as Result for MyString
});
});
console.log(MyString); // Here I get 'null' as Result
我希望URL内容数据被分配给MyString,这样我就能够读取函数外部的数据。这怎么可能呢?那里发生了三件事:
const
声明一个“变量”,不能更改(常量)的值
let
,可以使用局部变量来隐藏该常量。内部局部变量和外部常量之间没有任何联系
myString
,请使用let
声明它,并且在函数内部引用它时不要使用let
// SEE BELOW AS WELL
const https = require("https");
let myString = ""; // You probably want `""` or `null`, not `"null"`
var request = https.request(options, function (res) {
let data = "";
res.on("data", function (chunk) {
data += chunk;
});
res.on("end", function () {
// *** No `let` here
myString = data;
console.log(myString);
});
});
console.log(myString); // You'll still get `""` or `null` here, it isn't updated yet
请注意,我将var
替换为let
或const
,并将变量名称从MyString
更改为MyString
。在现代JavaScript代码中,var
是没有位置的,而绝大多数常见的变量命名惯例是以小写字母开头(初始大写用于构造函数函数名)
但是,因为上面的#3,你真的根本不想要myString
。相反:
const https = require("https");
var request = https.request(options, function (res) {
let myString = "";
res.on("data", function (chunk) {
myString += chunk;
});
res.on("end", function () {
// *** Just use `myString` here, don't try to use it
// at the top level of your module at all.
console.log(myString);
});
});
旁注:您的代码假定
chunk
将是一个字符串,但我不确定从https.request
获得的流是否正确,但我不确定这是否正确。如果是这样,很好,但它很可能是一个对象,在这种情况下,+=
将不起作用(您需要或类似)。const
声明一个常量,使用let
。但是您仍然不太幸运,请看您需要将其更改为:let MyString
和MyString=data代码>。外部的console.log(MyString)
仍然不起作用。你可能想看看:和