Как удалить переменную? - программирование
Подтвердить что ты не робот

Как удалить переменную?

Вот мой код javascript, я хочу удалить код переменной, чтобы он имел значение undefined.

var code = $(this).data('code');
var userelm = $(this);

Здесь я делаю проверку:

if($('.code-1').val()!='' && $('.code-2').val()!='' && $('.code-3').val()!=''){
    if(code==$('.code-1').val()+$('.code-2').val()+$('.code-3').val()){
        $('.overlay').remove();
        $('.code-box').remove();
        $('.close-lock').remove();
        userelm.ajaxloader(); //own function
        userelm.off();
        delete code;
        console.log(code);
        delete userelm;
    }
}

Почему эта программа не удаляет переменную code, поэтому она имеет значение undefined?

4b9b3361

Ответ 1

Удалить переменную в JavaScript:

Резюме:

Причина, по которой вам не удается удалить вашу переменную в JavaScript, заключается в том, что JavaScript не позволит вам. Вы не можете удалить что-либо, созданное командой var, если мы не вытащим кролика из нашей сумки трюков.

Команда delete предназначена только для свойств объекта, которые не были созданы с помощью var.

JavaScript позволит вам удалить переменную, созданную с помощью var при следующих условиях:

  • Вы используете интерпретатор javascript или командную строку.

  • Вы используете eval, и вы создаете и удаляете свой var внутри.

Демо на терминале, используйте команду delete boo или delete(boo). Демонстрация с терминалом командной строки js позволяет удалить переменную.

[email protected] ~ $ js

js> typeof boo
"undefined"

js> boo
typein:2: ReferenceError: boo is not defined

js> boo=5
5

js> typeof boo
"number"

js> delete(boo)
true

js> typeof boo
"undefined"

js> boo
typein:7: ReferenceError: boo is not defined

Если вы ДОЛЖНЫ установить свою переменную в undefined в JavaScript, у вас есть один вариант:

Демо на странице javascript: поместите это в myjs.html:

<html>
<body>
    <script type="text/JavaScript">
        document.write("aliens: " + aliens + "<br>");
        document.write("typeof aliens: " + (typeof aliens) + "<br>");
        var aliens = "scramble the nimitz";
        document.write("found some aliens: " + (typeof aliens) + "<br>");
        document.write("not sayings its aliens but... " + aliens + "<br>");
        aliens = undefined;
        document.write("aliens set to undefined<br>");
        document.write("typeof aliens: " + (typeof aliens) + "<br>");
        document.write("you sure they are gone? " + aliens);
    </script>
</body>
</html>

Откройте myjs.html с помощью браузера, он напечатает это:

aliens: undefined
typeof aliens: undefined
found some aliens: string
not sayings its aliens but... scramble the nimitz
aliens set to undefined
typeof aliens: undefined
you sure they are gone? undefined

Предупреждение. Когда вы устанавливаете переменную в undefined, вы назначаете переменную другой переменной. Если кто-то отравляет колодец, запустив undefined = 'gotcha!', тогда всякий раз, когда вы устанавливаете переменную в undefined, она становится: "gotcha!".

Как проверить, не имеет ли переменная значение?

Используйте значение null вместо undefined следующим образом:

document.write("skittles: " + skittles + "<br>");
document.write("typeof skittles: " + (typeof skittles) + "<br>");
var skittles = 5;
document.write("skittles: " + skittles + "<br>");
document.write("typeof skittles:" + typeof skittles + "<br>");
skittles = null;
document.write("skittles: " + skittles + "<br>");
document.write("typeof skittles: " + typeof skittles);

Какие принты:

skittles: undefined
typeof skittles: undefined
skittles: 5
typeof skittles:number
skittles: null
typeof skittles: object 

Если вы не используете strict, вы можете удалить переменные, созданные следующим образом:

<script type="text/JavaScript">
   //use strict
   a = 5;
   document.writeln(typeof a);        //prints number
   delete a;
   document.writeln(typeof a);        //prints undefined
</script>

но если вы раскомментируете use strict, javascript не будет работать.

Ответ 2

Delete не удаляет переменную.

Оператор delete удаляет свойство из объекта.

Вы можете попробовать:

code = null;

Ответ 3

В строгом режиме также работает:

"use strict";

var foo = 1;
console.log(foo);
// 1

foo = (function(){}());
console.log(foo);
// undefined

Ответ 4

Попробуйте это в глобальной области:

x = 2;
delete window.x;

Ответ 5

delete не влияет на имена переменных

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete

x = 42;         // creates the property x on the global object
var y = 43;     // declares a new variable, y
myobj = {
  h: 4,
  k: 5
};

delete x;       // returns true  (x is a property of the global object and can be deleted)
delete y;       // returns false (delete doesn't affect variable names)
delete Math.PI; // returns false (delete doesn't affect certain predefined properties)
delete myobj.h; // returns true  (user-defined properties can be deleted)

delete myobj;   // returns true  (myobj is a property of the global object, not a variable, so it can be deleted)

Ответ 6

Переменные, созданные на лету, будут автоматически удалены после того, как больше нет ссылок на него.

(function(){
  var a = 1;
})(); //a available until here

Ответ 7

потому что вы пишете var для определения переменной. если вы используете var, не можете удалить его. вы должны написать это

userelm = null;

или не пишите var. См. Этот вопрос: Как снять или удалить переменную Javascript?

Ответ 8

вам не нужно удалять var, если вы объявили его в функции - когда функция заканчивается, внутренний var перестает существовать. Вам просто не нужно объявлять переменные глобально.

Ответ 9

Мне не удалось с myvariable = null.

Но мне удалось с myvariable = function(){};