将方法添加到原型字符串但想要此方法是否意味着
Adding method to prototype string but want does this method mean
我想了解这是什么意思?
我在想的是 phrase
将传递数组的一部分,所以在这种情况下 eve
到 phrase.palindrome
方法。该方法将 运行 通过。首先 var len
获取 eve
并使用 length -1.
从中删除 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");
}
}
代码实质上是从两个方向遍历字符串,比较第一个字符和最后一个字符(索引 0 和 len),然后比较第一个字符中的第二个字符和最后一个字符中的第二个字符,依此类推,直到到达中间。一个单词是回文当且仅当第一个和最后一个字符相同,第二个和倒数第二个字符相同,依此类推。
请注意,此代码有一些非常错误的地方。虽然在 Javascript 中改变 built-in 类型的原型在技术上是可能的,但你永远不应该这样做。您无法从正常功能中获得任何功能,同时严重违反了最小意外原则。对待来自其他库的所有类型,包括内置函数,就好像它们对修改关闭而对扩展开放一样。
我认为这行有错误:
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++) {
我想了解这是什么意思?
我在想的是 phrase
将传递数组的一部分,所以在这种情况下 eve
到 phrase.palindrome
方法。该方法将 运行 通过。首先 var len
获取 eve
并使用 length -1.
从中删除 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");
}
}
代码实质上是从两个方向遍历字符串,比较第一个字符和最后一个字符(索引 0 和 len),然后比较第一个字符中的第二个字符和最后一个字符中的第二个字符,依此类推,直到到达中间。一个单词是回文当且仅当第一个和最后一个字符相同,第二个和倒数第二个字符相同,依此类推。
请注意,此代码有一些非常错误的地方。虽然在 Javascript 中改变 built-in 类型的原型在技术上是可能的,但你永远不应该这样做。您无法从正常功能中获得任何功能,同时严重违反了最小意外原则。对待来自其他库的所有类型,包括内置函数,就好像它们对修改关闭而对扩展开放一样。
我认为这行有错误:
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++) {