我試圖理解這意味著什么?
我在想的是這phrase將傳遞陣列的一部分,所以在這種情況下eve傳遞給phrase.palindrome方法。該方法將采用并運行它。首先使用并var len從中eve洗掉 1length -1.這導致var len分配為第二個,因為 eve 的長度為 3。現在for正在使用中,所以var i = 0; i <= len/2; i .
現在變成了var i = 1;1 <= 1; i .“這是正確的”
我不明白這里發生了什么:
for (var i = 0; i <= len/2; i ) {
if (this.charAt(i) !== this.charAt(len-i)) {
return false;
以下是所有代碼:
String.prototype.palindrome = function() {
var len = this.length-1;
for (var i = 0; i <= len/2; i ) {
if (this.charAt(i) !== this.charAt(len-i)) {
return false;
}
}
return true;
};
var phrases = ["eve", "kayak", "mom", "wow", "Not a palindrome"];
for (var i = 0; i < phrases.length; i ) {
var phrase = phrases[i];
if (phrase.palindrome()) {
console.log("'" phrase "' is a palindrome");
} else {
console.log("'" phrase "' is NOT a palindrome");
}
}
uj5u.com熱心網友回復:
代碼本質上是從兩個方向遍歷字串,比較第一個和最后一個字符(索引 0 和 len),然后比較第一個字符的第二個字符和最后一個字符的第二個字符,依此類推,直到到達中間。一個單詞是回文當且僅當第一個和最后一個字符相同并且倒數第二個和倒數第二個字符相同等等。
請注意,這段代碼有一些非常錯誤的地方。雖然在 Javascript 中改變內置型別的原型在技術上是可能的,但您永遠不應該這樣做。您不會從正常功能中獲得任何功能,同時嚴重違反了最小意外原則。將來自其他庫的所有型別(包括內置)視為關閉以進行修改并打開以進行擴展。
uj5u.com熱心網友回復:
我認為這條線有錯誤:
for (var i = 0; i <= len/2; i ) {
因為有些長度可以是 3,5,7... 這可能是個問題。
我添加了一些使用示例:
for (var i = 0; i <= Math.floor(len / 2); i ) {
// That same thing with floor in positive numbers, but in negative numbers that works like ceil.
for (var i = 0; i <= ~~(len / 2); i ) {
// That same thing with floor, we can think like this pollyfill of floor.
for (var i = 0; i <= ~~(len / 2) (Math.abs(len)>len?-1:0); i ) {
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461294.html
標籤:javascript 数组 for循环 原型 字形
