这是一种简短的书写变量的方式,无需再次声明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;
}
相同
function exampleFunction(obj) {
var val = obj.value.replace(/\D/g, '');
var char = {
3: '-',
6: '-'
}
var tmp = '';
for (var i = 0; i < val.length; i++) {
tmp += (char[i]||'') + val[i];
}
obj.value=tmp;
}
更新
你正在做一些正则表达式在这行代码替换。
var val = obj.value.replace(/\D/g, '');
从本质上讲,你正在使用正则表达式元字符\D
找到任何非数字字符的所有事件,并与''
替换它们。
char
对象可能是电话号码中的仪表板支架。 ex. 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;
这个循环基本上占位符-
用值在val[i]
组合。
char[i]
不会在循环中失败(它的确如此),因为它在逻辑上与空字符串或。如果char[i]
不存在,则它将是一个空字符串。
如果你通过它
// 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;
}
基本步骤运行,你应该看到事情的代码,你解析给定的obj.value
并删除所有非数字字符,并从它建立一个电话号码。
所以,obj.value = ?V6I0S7I5*5O5S1F2C[]3U4!
在开始和 obj.value = 607-555-1234
在这个程序结束。
它只是一个对象字面'char'和'tmp'一个空字符串。 –
'什么obj的值将be'输入几个数字与第3和第6位后一个连字符...所以607-555-1234 - 我beleive这是在纽约州好莱坞的电话号码 - 如果你打电话现在的数量,你不会相信接下来发生的事情 –
谢谢...它是如何从原始的字符串剥离的数字?我猜这些字符/ \ D/g是替换函数的参数吗?我知道/ g是让它在全球范围内找到所有事件。但其他人做了什么?我认为它正在寻找那些用''代替的字符。同样用char的怪异代码,这是否意味着char文字对象只有索引3和6?如果是这种情况,当循环时不会产生错误,并且i的值不是char中的索引? – valhalla