javascript - 如何重置变量值(删除 - 未定义 - 空)

标签 javascript variables undefined

我读过,如果你声明了一个变量,你就不能删除它。
如果您不申报就可以。
我还读到,如果您不声明一个变量,它可能会在以后引起问题。

我使用的某些 lints 指出了我所写的一些内容中已声明和未声明的问题,以停止报告这些问题,并且根据我迄今为止阅读的所有信息,我选择声明所有我的变量。

现在这让我感到困惑。

我正在尝试构建一个使用 Math.random 例程的随机名称生成器,当我尝试回收此例程时,它会添加到前一个例程中,我尝试将 var 设置为 undefined/null(它本身可以是定义的变量)并且它仍然只是将新结果添加到旧结果中,这使得如果您不喜欢旧名称则重新生成新名称的功能毫无用处。

写完这篇我意识到我的问题分为两个部分:

  • 如何从 var 中删除一个值并重新启动?
  • 声明变量真的那么重要吗?

我还没有找到任何关于已声明和未声明之间区别的可靠信息,除了它改变了变量的固有属性(主要是变量是否可以删除)

var nameLength = Math.floor(Math.random() * (13 - 3) + 3); /* min 3 max 13*/
testValue = Math.floor(Math.random() * (13 - 3) + 3);
var compareLetter = 0;
var randomLetter = "";
var randomName = "";
var capitolLetter = "";
var checkLetter = 0;
var nameTitle = "XXX"; /* titles add _ between title and name*/
var nameLetters = [
    ["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"],
    ["a", "e", "i", "o", "u"],
    ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z"]
];
if (nameTitle !== "") { /* my attempt to subtract title length +1 from name length if over 13*/
    nameLength = nameLength + (nameTitle.length + 1);
    if (nameLength > 13) {
        nameLength = nameLength - (nameLength - 13);
    }
}
for (i = 0; i < nameLength; i++) {
    randomLetter = nameLetters[compareLetter][Math.floor(Math.random() * nameLetters[compareLetter].length)];
    checkLetter = nameLetters[1].indexOf(randomLetter);
    if (checkLetter > -1) { /* my version of keeping consanants and vowels from stacking up */
        compareLetter = 2;
    } else {
        compareLetter = 1;
    }
    if (randomName.length < 1) { /* my version to keep first letter capitolized*/
        capitolLetter = randomLetter.toUpperCase();
        randomName = randomName + capitolLetter;
    } else {
        randomName = randomName + randomLetter;
    }
}
if (nameTitle !== "") {
    alert(nameTitle + "_" + randomName);
} else {
    alert(randomName);
}
alert("this is nameLength" + nameLength);
alert("this is testValue " + testValue);
delete nameLength;
delete testValue;
alert("this is nameLength" + nameLength);
alert("this is testValue " + testValue); /* notice this was not displayed*/
http://jsfiddle.net/OldGuyGamer/PJsZ3/4/

这是我正在使用的,请记住,每次运行后 fiddle 似乎都会被 GC,我设置它的环境不会那样做。

最佳答案

I read if you declare a variable you can not delete it.

是的。例如 变种富= 1; 删除富; 控制台日志(富);//1

但是要采取的方法是.. 不要删除变量

只删除成员。例如删除 foo.bar

您可以将其重新初始化为空状态,而不是删除变量,即 foo = undefined

关于javascript - 如何重置变量值(删除 - 未定义 - 空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24243589/

相关文章:

Javascript 整数数组错误

android - 如何修改一个 Activity 的另一 Activity 的变量?

javascript - jQuery,形式上的变量数学

jquery - NestedSortable,toHierarchy 返回未定义

javascript - 临时对象和永久对象 Javascript

javascript - Typescript:将字符串作为 HTML 打印到终端?

javascript - 特定时间后的转化跟踪

javascript - 如何防止导航到某些类型文件的符号类型声明

javascript - 这里的范围是改变了还是别的什么?

php - 当从一个按钮调用多个变量时如何定义变量