Javascript中如果使用一个变量作为对象方法的参数,应该如何表示?

比方说
我事先定义一个变量a
var a=3
想用substr方法从第a个字符开始截取一个字符串
我自己摸索出来了一个表示方法是下面这样
document.write(str.substr('+a+'));
但是我不明白其中的原理,这样写是否是标准的表示方式'+a+'?
随后我又尝试把加号替换为其他字符(类似这样'!a!' '!a+' '$a$')都可以实现

求一个这样使用变量作为参数的相关说明文档,或者把这块的知识说一下也行,谢谢!

你想用substr去截取字符串么?
但是你用'+a+'作为substr方法的参数去截取字符串,就理解不了了。substr方法的有两个参数,第一个是起始位置,第二个是新字符串长度(可选的参数,不填则截取到字符串末尾),这两个参数都是数字型的,字符串型的无效。
我也测试过,str.substr('+a+')用法得到的结果还是源字符串str。

下面是substr方法的介绍,给你参考一下:
substr 方法

返回一个从指定位置开始的指定长度的子字符串。

stringvar.substr(start [, length
])

参数

stringvar

必选项。要提取子字符串的字符串文字或 String 对象。

start

必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。

length

可选项。在返回的子字符串中应包括的字符个数。

说明

如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到 stringvar
的最后。

示例

下面的示例演示了substr 方法的用法。
function SubstrDemo(){
var s, ss; // 声明变量。
var s = "The rain in Spain falls mainly in the plain.";
ss = s.substr(12, 5); // 获取子字符串。
return(ss); // 返回 "Spain"。
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-15
> var a = 3
undefined
> a
3
> var str = "12345678"
undefined
> str
'12345678'
> str.substr(a)
'45678'
> str.substr('+a+')
'12345678'
> str.substr(a-1)
'345678'


在 nodejs 中的执行结果,因为 a == 3,所以你调用 str.substr(a) 就等于调用了 str.substr(3),而 str.substr(a-1) 就等同于调用 str.substr(2)。进一步的,你调用 str.substr('+a+'),实际上是往 substr 方法里传了一个字符串 +a+,字符串不是数字,substr 把它理解为了0。


使用变量作为参数和使用字面量作为参数没有任何区别,在方法执行那一刻变量的值是什么,那么就相当于你用那个值的字面量去调用方法。

本回答被提问者和网友采纳
第2个回答  2013-09-15
这些都是一些怪异写法,不建议使用
a='afds,fdsa';

a=a.substring(0,a.indexOf(","));
alert(a);

详细你可以javascript参考手册,手册最准确了,手册一搜一大片
相似回答