这个问题在这里已有答案:
所以我现在正试图弄清楚下面的代码会输出什么。我对substr函数感到困惑,所以如果你能解释它会很棒。谢谢
function getAttackString() {
var foo = "d32329b34";
var bar = "x38h309hj";
return "The code is: "+(foo.substr(3,foo.length-6))+(bar.substr(2));
}
console.log(getAttackString());
3298 AH 09 AH
foo.substr(3,foo.length - 6))=>从char 3 = 329开始,得到比foo短6个字符的foo的子字符串
bar.substr(2)=>获取从char 2开始的bar的子串并返回所有chars = 8h309hj
function getAttackString() {
var foo = "d32329b34";
var bar = "x38h309hj";
return "The code is: "+(foo.substr(3,foo.length-6))+(bar.substr(2));
}
console.log( getAttackString() );
substr()
方法通过指定的字符数返回从指定位置开始的字符串中的字符。
这个函数的语法是
str.substr(start[, length])
start
:开始提取字符的位置。如果给出负数,则将其视为strLength + start,其中strLength是字符串的长度。例如,str.substr(-3)
被视为str.substr(str.length - 3)
length
:要提取的字符数。如果未定义此参数,则提取从字符串的开头到结尾的所有字符。
(Qazxswpoi)
所以将它应用于您的代码:
表达式function getAttackString() {
var foo = "d32329b34";
var bar = "x38h309hj";
return "The code is: " + foo.substr(3,foo.length-6) + bar.substr(2);
}
console.log(getAttackString());
从第4个字符foo.substr(3,foo.length-6)
开始提取foo.length-6
(9-6=3
)字符,产生3
。
表达式329
从第3个字符bar.substr(2)
开始提取所有字符(因为第二个参数,length
,未定义),导致8
。
把它们放在最后的表达式中,你得到:8h309hj