Tôi muốn nói trước. Rất người mới bắt đầu. Tử tế. Tuy nhiên. Tôi đang cố gắng đảo ngược một chuỗi. Đặt một chuỗi vào một hàm như một đối số và đảo ngược thứ tự của nó. Ví dụ 'xin chào' nên trả lại 'olleh', v.v.
Tôi đã hoàn thành việc này bằng cách làm:
function revString[stringArg] {
return stringArg.split[""].reverse[].join["];
}
Tuy nhiên. Bằng cách làm như thế này:
function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
Đầu ra kết quả cho hàm thứ hai là đảo ngược [] không phải là một hàm. Ai đó có thể cho tôi biết sự khác biệt ở đây là gì?
Anthony Phạm
3.0865 Huy hiệu vàng30 Huy hiệu bạc37 Huy hiệu Đồng5 gold badges30 silver badges37 bronze badges
Hỏi ngày 30 tháng 7 năm 2017 lúc 15:36Jul 30, 2017 at 15:36
2
Điều này xảy ra vì split[]
không phân chia chuỗi tại chỗ, mà thay vào đó trả về chuỗi phân chia dưới dạng giá trị mới. Trong chức năng thứ hai của bạn, bạn làm stringArg.split[]
, nhưng vì hoạt động đó không xảy ra, stringArg
không bao giờ bị đột biến. Nó giữ lại cùng một giá trị và loại trong suốt, dẫn đến lỗi bạn đang thấy.
Lý do hàm đầu tiên hoạt động là vì các cuộc gọi hàm được áp dụng cho giá trị trả về của cuộc gọi trước đó. Nói cách khác:
split[]
được gọi vàostringArg
2 được gọi là giá trị trả về củafunction revString [stringArg] { stringArg.split[""]; stringArg.reverse[]; stringArg.join[""]; return stringArg; }
split[]
, đây là một mảng và do đó có thể được đảo ngược trực tiếp
4 được gọi là giá trị trả về củafunction revString [stringArg] { stringArg.split[""]; stringArg.reverse[]; stringArg.join[""]; return stringArg; }
2function revString [stringArg] { stringArg.split[""]; stringArg.reverse[]; stringArg.join[""]; return stringArg; }
Nhưng trong hàm thứ hai, bạn gọi tất cả chúng trên cùng một biến, stringArg
, vẫn giữ nguyên trong suốt. Để chức năng của bạn hoạt động, bạn cần sửa đổi nó như vậy:
function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
Tuy nhiên, điều này, trong khi dễ hiểu hơn, có lẽ, là một dòng chảy một cách không cần thiết. Tôi khuyên bạn nên gắn bó với chức năng ban đầu.
Đã trả lời ngày 30 tháng 7 năm 2017 lúc 15:42Jul 30, 2017 at 15:42
Điều này là do
function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
7 được sử dụng trên đầu ra của function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
8.Sử dụng
function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
7 tự nó không hoạt động vì dòng trước khi nó không thay đổi trực tiếp trừ khi bạn gán lại nó bằng function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
0. Dòng đầu tiên sẽ trả về mảng ký tự nhưng không thay đổi trực tiếp ____99.So:
stringArg.split[""].reverse[].join[""];
có nghĩa là
function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
2 tất cả các phần tử trong mảng có các phần tử theo thứ tự function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
3 dựa trên function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
4ing của chuỗi. Nói cách khác, function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
7 được sử dụng trên function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
6, không chỉ stringArg
và tương tự với function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
8: nó được áp dụng cho function revString [stringArg] {
a = stringArg.split[""]; // Array
b = a.reverse[]; // Reversed array
c = b.join[""]; // String
return c;
}
9 không chỉ stringArg
.Do đó, giải pháp sẽ là:
function revString2 [stringArg] {
a = stringArg.split[""];
b = a.reverse[];
c = b.join[""];
return c;
}
Đã trả lời ngày 30 tháng 7 năm 2017 lúc 15:47Jul 30, 2017 at 15:47
Anthony Phama PhạmAnthony Pham
3.0865 Huy hiệu vàng30 Huy hiệu bạc37 Huy hiệu Đồng5 gold badges30 silver badges37 bronze badges
Hỏi ngày 30 tháng 7 năm 2017 lúc 15:36
Điều này xảy ra vì split[]
không phân chia chuỗi tại chỗ, mà thay vào đó trả về chuỗi phân chia dưới dạng giá trị mới. Trong chức năng thứ hai của bạn, bạn làm stringArg.split[]
, nhưng vì hoạt động đó không xảy ra, stringArg
không bao giờ bị đột biến. Nó giữ lại cùng một giá trị và loại trong suốt, dẫn đến lỗi bạn đang thấy.
Lý do hàm đầu tiên hoạt động là vì các cuộc gọi hàm được áp dụng cho giá trị trả về của cuộc gọi trước đó. Nói cách khác:
split[]
được gọi vào stringArg
Jul 30, 2017 at 15:41
function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
2 được gọi là giá trị trả về của split[]
, đây là một mảng và do đó có thể được đảo ngược trực tiếpthen use stringArg.split[""].reverse[].join[""];
6, which works in
situ [mutates the original array] and then, return joined array.function revString[stringArg] {
let arr = stringArg.split[""];
arr.reverse[];
return arr.join[""];
}
console.log[revString['hello']];
function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
4 được gọi là giá trị trả về của function revString [stringArg] {
stringArg.split[""];
stringArg.reverse[];
stringArg.join[""];
return stringArg;
}
2Jul 30, 2017 at 15:43
Nhưng trong hàm thứ hai, bạn gọi tất cả chúng trên cùng một biến, stringArg
, vẫn giữ nguyên trong suốt. Để chức năng của bạn hoạt động, bạn cần sửa đổi nó như vậy:kind user
Tuy nhiên, điều này, trong khi dễ hiểu hơn, có lẽ, là một dòng chảy một cách không cần thiết. Tôi khuyên bạn nên gắn bó với chức năng ban đầu.6 gold badges63 silver badges77 bronze badges
Đã trả lời ngày 30 tháng 7 năm 2017 lúc 15:42
function revString [ stringArg ] {
stringArg=stringArg . split [ "" ];
stringArg=stringArg . reverse [];
stringArg=stringArg . join [ "" ]; return stringArg ; }
Đã trả lời ngày 30 tháng 7 năm 2017 lúc 15:47Jul 30, 2017 at 15:47
user7951676user7951676user7951676
Anthony Phama Phạm2 silver badges10 bronze badges