为什么不能在JavaScript循环中更改变量,而该变量只是在变量外声明的]]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么不能在JavaScript循环中更改变量,而该变量只是在变量外声明的]]相关的知识,希望对你有一定的参考价值。
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; };
我的目标是编辑字符串(包含电子邮件)以掩盖第一部分,例如说电子邮件为
johndoe@abc.com
,那么我应该输出j*****e@abc.com
。
但是在循环中,我无法将字符更改为星号。
执行后,我看到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允许您使用[]索引访问字符串的值..但是这是只读访问...您不能使用该运算符插入/替换值。
参考: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.)
另一答案
嗯,这就是您要寻找的,这将是输出j*****e@abc.com
。
另一答案
这是您使用的方法的代码:
以上是关于为什么不能在JavaScript循环中更改变量,而该变量只是在变量外声明的]]的主要内容,如果未能解决你的问题,请参考以下文章