为什么不能在JavaScript循环中更改变量,而该变量只是在变量外声明的]]

问题描述 投票:2回答:3
var maskPII = function(S) {
    var ans = "";
    if(S.includes("@")){
        S = S.toLowerCase();
        var parts = S.split("@");
        var first = parts[0];
        for(var i=0;i<parts[0].length;i++){
            if(i!=0 && i!=parts[0].length - 1)
                first[i] = '*';
        }
        ans = first +"@" +parts[1];
    }else{

    }
    return ans;
};

我的目标是编辑字符串(包含电子邮件)以掩盖第一部分,例如说电子邮件为[email protected],那么我应该输出j*****[email protected]

但是在循环中,我无法将字符更改为星号。

执行后,我看到first的值仍然与parts[0]相同并且没有星号,有人可以解释为什么吗?另外,我该怎么做才能在循环内修改变量?

var maskPII = function(S){var ans =“”; if(S.includes(“ @”)){S = S.toLowerCase(); var parts = S.split(“ @”); var first = parts [0]; for(var i = 0; i ] >>>

javascript
3个回答
0
投票

要回答您的问题... javascript允许您使用[]索引访问字符串的值..但是这是只读访问...您不能使用该运算符插入/替换值。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

When using bracket notation for character access,
attempting to delete or assign a value to these properties will not succeed.
The properties involved are neither writable nor configurable.
(See Object.defineProperty() for more information.)

0
投票

嗯,这就是您要寻找的,这将是输出j*****[email protected]


0
投票

这是您使用的方法的代码:

© www.soinside.com 2019 - 2024. All rights reserved.