这在Javascript字符中是什么?{3:';-';,6:';-';},tmp=";;

这在Javascript字符中是什么?{3:';-';,6:';-';},tmp=";;,javascript,Javascript,我试图弄清楚以下代码行在Javascript中的作用: char = {3:'-',6:'-'}, tmp=''; 我不认识这种语法。它来自这段代码: // obj.value = '?V6I0S7I5*5O5S1F2C[]3U4!'; function exampleFunction(obj) { var val = obj.value.replace(/\D/g, ''), char = {3:'-',6:'-'}, tmp=''; for (var

我试图弄清楚以下代码行在Javascript中的作用:

char = {3:'-',6:'-'}, tmp='';
我不认识这种语法。它来自这段代码:

// obj.value = '?V6I0S7I5*5O5S1F2C[]3U4!'; 
function exampleFunction(obj) { 
    var val = obj.value.replace(/\D/g, ''), 
        char = {3:'-',6:'-'}, tmp=''; 
    for (var i = 0; i < val.length; i++) { 
        tmp += (char[i]||'') + val[i]; 
    } 
    obj.value=tmp; 
} 
//obj.value='?V6I0S7I5*5O5S1F2C[]3U4!';
函数示例函数(obj){
var val=obj.value.replace(/\D/g',),
char={3:'-',6:'-'},tmp='';
对于(var i=0;i

我正在试图弄清楚这段代码的作用以及obj的值是什么。

这段代码声明了两个局部变量并给它们赋值

逗号前的代码声明一个名为
char
的变量,并为其分配一个具有两个属性的对象文字。逗号后的代码声明一个名为
tmp
的变量,并为其分配一个空字符串


你应该读这篇文章;这将很有帮助:

这是一种不用再次声明
var
即可编写变量的简捷方法

function exampleFunction(obj) { 
    var val = obj.value.replace(/\D/g, ''), 
        char = {3:'-',6:'-'}, tmp=''; 
    for (var i = 0; i < val.length; i++) { 
        tmp += (char[i]||'') + val[i]; 
    } 
        obj.value=tmp; 
}
基本上,您使用正则表达式元字符
\D
查找所有出现的非数字字符,并将其替换为
'

char
对象可以是电话号码中的短划线占位符<代码>例123-123-1234
破折号位于电话号码字符串中的位置
3和4
6和7
之间

var char = {
    3: '-',
    6: '-',
}

var tmp = '';
for (var i = 0; i < val.length; i++) {
    tmp += (char[i] || '') + val[i];
}
obj.value = tmp;
基本上,您正在解析给定的
obj.value
,删除所有非数字并从中生成电话号码

所以,
obj.value=?V6I0S7I5*5O5S1F2C[]3U4在开头和结尾处
obj.value=607-555-1234
在本程序末尾。

基本上是对象

char = {
   3: '-',
   6: '-'
}
用于获取索引并返回属性exists的值,否则返回一个空字符串以添加到字符串中

tmp += char[i] || '';

结果是一个带破折号的字符串,用于索引3和索引6。

它只是
char
的一个对象文本,而
tmp
的一个空字符串将是obj的值。
输入的数字,在第3位和第6位后面加上连字符。。。所以607-555-1234-我相信这是纽约州的好莱坞电话号码-如果你现在打这个号码,你不会相信接下来会发生什么汉克斯。。。如何从原始字符串中剥离数字?我猜这些字符/\D/g是replace函数的参数?我知道/g是为了让它在全球范围内查找所有事件。但是另一个做什么呢?我以为它正在寻找那些字符来替换为“”。还有这个奇怪的char代码,这是否意味着char literal对象只有索引3和索引6?如果是这样的话,在循环时不会产生错误,并且i的值不是char中的索引吗?只需通过谷歌正则表达式教程查找
/\D/g
的值,感谢您的回复…我在第一次回复的评论中询问了更多关于这一点的信息…感谢您的回复…我在对的评论中询问了更多关于这一点的信息第一个回复…感谢您的回复…我在对第一个回复的评论中进一步询问了这一点。。。。
// obj.value = '?V6I0S7I5*5O5S1F2C[]3U4!'; 
function exampleFunction(obj) { 
    var val = obj.value.replace(/\D/g, ''), // obj.value = 6075551234
        char = {3:'-',6:'-'}, tmp=''; 
    for (var i = 0; i < val.length; i++) { 
        tmp += (char[i]||'') + val[i];  
        // Iterations:
        // 0. tmp = "6";
        // 1. tmp = "60";
        // 2. tmp = "607";
        // 3. tmp = "607-5"; <- char[i] exists, so add a '-' + val[i];
        // 4. tmp = "607-55";
        // 5. tmp = "607-555";
        // 6. tmp = "607-555-1"; <- char[i] exists, so add a '-' + val[i];
        // 7. tmp = "607-555-12";
        // 8. tmp = "607-555-123";
        // 9. tmp = "607-555-1234";
    } 
        obj.value=tmp; 
}
char = {
   3: '-',
   6: '-'
}
tmp += char[i] || '';