JavaScript:为什么这个代码不;t工作

JavaScript: Why This Code Doesn't Work?

本文关键字:工作 代码 为什么 JavaScript      更新时间:2023-09-26

我正试图创建一个文本加密器,但当我输入此代码时,什么也没发生。我的代码出了什么问题?

function Encrypt(txt) {
var chars = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'}
for (i = 0; i < txt.length; i++) {
    var chr = txt.charAt(i);
    var pos = chars.indexOf(chr);
    if (pos == chars.length) {
        pos = 0;
    }
    else {
        pos = pos++
    }
    txt.charAt(i) = chars[pos];
}
alert(txt);
}

您需要

  • 数组CCD_ 1而不是对象CCD_
  • 一些已声明的变量
  • 一个空的结果字符串newText,一个字符串是用字符访问只读的
  • 如果字母不在数组中,则进行有效检查
  • 在不分配的情况下递增CCD_ 4
  • 将编码字符附加到结果字符串中

function Encrypt(txt) {
    var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'],
        i, newText = '', chr, pos;
    for (i = 0; i < txt.length; i++) {
        chr = txt[i];
        pos = chars.indexOf(chr);
        if (!~pos) {
            pos = 0;
        } else {
            pos++;
        }
        newText += chars[pos];
    }
    document.write(newText);
}
Encrypt('test');

因为这不是数组,而是对象。。。并且对象必须具有CCD_ 5结构。

更改此项:

var chars = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'}

到此:

var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z']

没有考虑到其他答案中描述的错误,我对加密字符串的建议是:

function Encrypt(txt) {
  var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'];
  var txtResult = txt.split('').map(function(val) {
    var pos = chars.indexOf(val);
    return chars[(pos == chars.length) ? 0 : (pos + 1)];
  }).join('');
  document.write(txtResult);
}
Encrypt('gaemaf');