Что значит undefined в интернете? как понять undefined? перевод и смысл

Исследование бездны null и undefined в JavaScript

Что значит undefined в интернете? Как понять undefined? Перевод и смысл

Говоря о примитивных типах данных в JavaScript, большинство имеет в виду самые основные из них: String, Number, и Boolean. Эти примитивы достаточно предсказуемы, и работают так, как от них и ожидается. Однако, речь в данной статье пойдет об менее обыденных примитивных типах, Null и Undefined, о том, в чём они схожи, различны, и, вообще говоря, необычны.

Понимание null и undefined

В JavaScript null — это литерал и ключевое слово языка, которое представляет собой отсутствие какого-либо объекта. Другими словами, null указывает «в никуда».

В свою очередь, хоть и похожий по смыслу undefined, олицетворяет отсутствие значения как такового. Оба абсолютно неизменны, не имеют свойств и методов и не способны их иметь.

Фактически, попытка обратиться к какому-нибудь свойству, или присвоить его, приведёт к ошибке TypeError. Оба этих примитива, как намекают их имена, совершенно лишены значений.

Это самое отсутствие значения приводит к тому, что они считаются ложными, в том смысле, что они приводятся к false если используются в качестве условия, например, в конструкции if. А если сравнить null и undefined с другими ложными значениями при помощи оператора нестрогого сравнения (==), то окажется, что они не равны ничему, кроме самих себя:

null

==

;

//

false

undefined

==

«»

;

//

false

null

==

false

;

//

false

undefined

==

false

;

//

false

null

==

undefined;

//

true

Несмотря на эти сходства, null и undefined не эквивалентны. Каждый из них является представителем своего типа: undefined — представляет тип Undefined, а null, соответственно — тип Null. Это легко доказать, сравнив их при помощи оператора строгого сравнения (===), который принимает в расчёт не только значения, но и типы данных:

undefined

===

null

;

//

false

Это важное различие, и оно не случайно, ведь эти примитивы служат для разных целей. Чтобы их различать, вы можете считать undefined неожиданным отсутствием значения, а null — умышленным отсутствием значения.

Получение undefined

Есть множество способов получить значение undefined в коде. Обычно это происходит при попытке получить значение там, где значения нет. В этом случае JavaScript, будучи динамическим, слабо типизированным языком, не покажет ошибку, а выдаст значение по умолчанию, undefined.

Любая объявленная переменная, которой при создании не присвоено никакого значения, имеет значение undefined:

var

foo;

Значение undefined также получается при попытке обратиться к несуществующему свойству объекту или элементу массива:

var

array = [

1

,

2

,

3

];

var

foo = array.foo;

var

item = array[

5

];

Если в функции нет оператора return, она возвращает undefined:

var

value = (

function()

{})();

Если функции не был передан какой-либо аргумент, он становится undefined:

(

function(undefined)

{ })();

Помимо всего вышеперечисленного, для получения undefined может использоваться оператор void. Некоторые библиотеки, вроде Underscore пользуются этим для надежной проверки типов, потому как void нельзя переопределить, и он всегда возвращает undefined:

function isUndefined(obj)

{

return

obj ===

void

;
}

Наконец, undefined — это предопределённая глобальная переменная (а не ключевое слово, как null), которая равна undefined:

'undefined'

in

window

;

Начиная с пятой версии ECMAScript эта переменная доступна только для чтения, а, вот, в предыдущих версиях её было возможно переопределить.

Применение null

В первую очередь null отличается своим применением, и в отличие от undefined, null больше используется для присваивания значения. Как раз из-за этого оператор typeof для null возвращает «object».

Изначально это объяснялось тем, что null использовался (и используется) как пустая ссылка там, где ожидается объект, что-то вроде заглушки.

Такое поведение typeof было позже признано багом, и, хотя было предложено это поведение исправить, пока что, в целях обратной совместимости, всё остается как есть.

Вот, почему окружение JavaScript не выставляет никаких значений в null, и это делается только программно. В документации на MDN написано следующее:

Это правдиво для DOM, который не зависит от языка и никак не описывается в документации ECMAScript. Из-за того, что используется внешний API, попытка получить отсутствующий элемент возвращает null, а не undefined.

Вообще, если нужно присвоить «не-значение» переменной или свойству, передать его в функцию, или вернуть из функции, то null — это почти всегда лучший вариант. Упрощённо: JavaScript использует undefined, а программисты должны использовать null.

Другой способ применения null — явное «зануливание» переменной (object = null), когда ссылка на объект больше не требуется. Кстати, это считается хорошей практикой. Присваивая null, вы фактически удаляете ссылку на объект, и если на него нет других ссылок, он отправляется к сборщику мусора, таким образом возвращая доступную память.

Копнём глубже

Причина того, что null и undefined эдакие чёрные дыры, кроется не только в их поведении, но ещё и в том, как они обрабатываются внутри окружения JavaScript. Они не обладают теми характеристиками, которые обычно присущи другим примитивам и встроенным объектам.

Начиная с ES5 метод Object.prototype.toString, ставший стандартом де-факто для проверки типов, стал полезен в этом отношении и для null с undefined:

Object

.prototype.toString.call(

null

);

Object

.prototype.toString.call(

undefined

);

Однако, на самом деле у null и undefined этот метод не возвращает внутреннее свойство [[Class]]. По документации он работает следующим образом:

Этот метод просто возвращает заготовленную строку, если обнаруживает null или undefined, просто чтобы унифицировать функциональность с другими объектами. Такое поведение встречается сплошь и рядом во всей документации, большая часть методов содержат простую проверку, и если встретился null или undefined, возвращают значение сразу.

Фактически, нигде не написано, что у них содержатся какие-либо внутренние свойства, обычно имеющиеся у каждого нативного объекта. Это как если бы они вообще не были объектами. Интересно, эти примитивы в окружении JavaScript как-то явно и особо обрабатываются? Может быть, кто-то более знакомый с имплементацией мог бы подсказать.

Заключение

Неважно, насколько необычными кажутся примитивы null и undefined, понимание разницы между ними и их различиями в использовании согласно JavaScript очень важно для понимания языка в целом.

Это понимание, конечно же, само по себе не заставит работать ваше приложение или, например, не сломает его, но, строго говоря, оно положительно скажется в долгосрочной перспективе, облегчив вам разработку и отладку будущих проектов.

Комментарий переводчика

При написании этой статьи автор забыл упомянуть одну важную деталь: у примитивов, как таковых, не может быть свойств вообще, они есть только у объектов. А при попытке получить свойство у примитива, он будет неявно преобразован в объект. В этом легко убедиться:

var

s =

'test'

, o =

Object

(s);
o.foo =

42

;
s.foo =

42

;
o.foo; s.foo;

Дело в том, что null и undefined просто нельзя преобразовать в объект, на чем и строится объяснение ключевых особенностей этих примитивов автором этой статьи.

Также, фраза про то, что null в окружении JavaScript без явного присваивания не используется, неверна. В конце цепочки прототипов находится null, и это как раз тот случай, когда ожидается объект, но его нет:

Object

.getPrototypeOf(

Object

.prototype);

Источник: https://frontender.info/exploring-the-abyss-of-null-and-undefined-in-javascript/

undefined

  • 1 undefined<\p>Большой англо-русский и русско-английский словарь
  • 2 undefined<\p>undefined term — неопределенный членundefined state — неопределенное состояниеundefined variable — неопределенная переменнаяEnglish-Russian dictionary of Information technology
  • 3 undefined<\p>undefined term — неопределенный членundefined state — неопределенное состояниеundefined variable — неопределенная переменнаяThe English-Russian dictionary general scientific
  • 4 undefined<\p>[͵ʌndıʹfaınd] undefined reverie — неясные /смутные/ мечты2. не определённый, не зафиксированныйundefined crime — преступление, состав которого не сформулирован в нормах праваНБАРС
  • 5 undefined<\p>Англо-русский толковый словарь терминов и сокращений по ВТ, Интернету и программированию.
  • 6 undefined<\p>1) неопределённый, неустановленный, не получивший определенияundefined crime юр. — преступление, состав которого не определён в нормах права2) неопределённый, не вполне отчётливый, неясныйHe was kind of a blurry undefined figure in my mind. — Его образ был каким-то размытым, неясным в моём воображении.Англо-русский современный словарь
  • 7 undefined<\p>неопределённый; произвольныйEnglish-Russian scientific dictionary
  • 8 undefined<\p>undefined reverie — неясные мечты2. a не определённый, не зафиксированныйundefined crime — преступление, состав которого не сформулирован в нормах права1. boundless (adj.) boundless; immeasurable; limitless2. faint (adj.) blear; bleary; dim; faint; fuzzy; ill-defined; indistinct; obscure; shadowy; unclear; undetermined; undistinct; vague3. indefinite (adj.) endless; indefinite; inexact; infinite; irregular; tenuous; uncertain; unlimited4. indeterminate (adj.) indeterminate; unknown; unspecified; variabledistinct; limited; specificEnglish-Russian base dictionary
  • 9 undefined<\p>undefined variable — неопределенная переменнаяundefined state — неопределенное состояниеEnglish-Russian big polytechnic dictionary
  • 10 undefined<\p>undefined variable — неопределенная переменнаяundefined state — неопределенное состояниеEnglish-Russian big medical dictionary
  • 11 undefined<\p>Персональный Сократ
  • 12 undefined<\p>English-Russian short dictionary
  • 13 undefined<\p>

Англо-русский словарь нормативно-технической терминологии

  • 14 undefined<\p>

    1) неопределенный

    2) произвольный

    3) неопределяемый

    Англо-русский технический словарь

  • 15 undefined<\p>[ˌʌndɪ'faɪnd]

    1) Общая лексика: неопределённый, неидентифицированный

    2) Математика: двусмысленный, недефинированный, неопределяемый, неясный

    3) Юридический термин: не получивший определения

    4) Патенты: неизвестный

    5) Психоанализ: не имеющий определения

    6) Макаров: не зафиксированный, не определённый

    Универсальный англо-русский словарь

  • 16 undefined<\p>

    English-Russian electronics dictionary

  • 17 undefined<\p>

    English-Russian dictionary of mechanical engineering and automation

  • 18 undefined<\p>

    Англо-русский словарь нефтегазовой промышленности

  • 19 undefined<\p>

    (a) неизвестный

    * * *

    1) неопределенный 2) неопределяемый

    * * *

    неопределенный

    * * *

    неопределен

    неопределенен

    неопределенный

    неопределим

    неопределимый

    неурочный

    Новый англо-русский словарь

  • 20 undefined<\p>

    English-Russian dictionary of chemistre

  • Страницы

    Источник: https://translate.academic.ru/undefined/en/ru

    Всё только о JavaScript

    undefined (неопределённое значение) — элементарное значение типа Undefined, используемое, когда переменной или свойства объекта не существует или ему ещё не было присвоено значение. Т.е. положительность условия

    foo.bar == undefined

    или

    typeof foo.bar == 'undefined'

    может означать как отсутствие свойства bar у объекта foo, так и его наличие, но со значением undefined. Равно как и положительность условия

    typeof undef == 'undefined'

    может означать отсутствие переменной undef или её наличие со значением undefined. Обратите внимание, что запись undef == undefined вызовет исключение ReferenceError в случае, если переменной undef не существует. В то время как typeof undef выполнится корректно.

    В случаях, когда необходимо проверить наличие свойства с любым значением, в том числе undefined, необходимо проверять именно наличие свойства, а не его значение. Для этого предназначен оператор in.

    if (foo.bar == undefined) { alert('Свойства bar у объекта foo или нет, или оно равно undefined');
    }
    if ('bar' in foo) { alert('Свойство bar у объекта foo есть.');
    }

    Проверить наличие глобальной переменной можно проверяя наличие свойства у window.

    if ('t' in window) { alert('Существует глобальная переменная t');
    }

    Наличие локальной переменной проверить нет возможности, но это, как правило, и не требуется, т.к. локальное пространство имён находится под большим контролем, нежели глобальное.

    Необязательные аргументы функций

    Если в функцию не передать аргумент, то к ней придёт undefined. Также как если передать undefined придёт, разумеется, он же. Поэтому, если нужно узнать именно, был ли передан аргумент, вне зависимости от его значения, то нужно проверять свойство length объекта arguments. Оно будет равно количеству переданных в функцию аргументов.

    Реализуем, например, метод push для массивов, который полученные аргументы добавляет в массив. Он конечно же должен уметь добавлять undefined.

    Array.prototype.push = function() { for (var i = 0; i < arguments.length; i++) { this[this.length] = arguments[i]; } };

    В последнее время также распространена эмуляция свойств методом, который при отсутствии аргумента притворяется геттером, а при наличии — сеттером. Здесь тоже важно проверять передан ли аргумент, а не что именно передано.

    // Неправильно, при таком подходе невозможно присвоить undefined
    foo.property = function(value) { if (typeof value == 'undefined') { // Возвращаем значение } else { // Присваиваем значение }
    } // Правильно
    foo.property = function(value) { if (arguments.length > 0) { // Присваиваем значение } else { // Возвращаем значение }
    }

    Восстановление undefined

    undefined это всего лишь заранее определённая глобальная переменная. Её, как и любую другую переменную, можно переопределить, и тогда более компактная конструкция foo.

    bar == undefined работать не будет. Поэтому для большей отказоустойчивости скриптов необходимо использовать или typeof, или «добывать» для себя значение типа Undefined.

    Для этого можно воспользоваться несколькими способами.

    Во-первых, существует конструкция void, которая всегда возвращает undefined.

    var my_undef = void 0;

    Во-вторых, можно описать локальную переменную, но не инициализировать её.

    (function() { var undefined;
    })();

    В-третьих, можно завернуть исполняемый скрипт в безымянную функцию, описать у неё параметр, но сам параметр при вызове не передавать.

    (function(undefined) { })();

    Источник: http://alljs.ru/articles/undefined

    почему получается undefined

    В javascript как и в любом другом языке програмирования функции выполняют прямие действия и побочные.

    Прямые это например сложеные двух чисел и возврат результата

    function sum(a, b) { return a + b;
    } // в этом случае результат роботы функции можно записывать в переменную
    var rez = sum(2,2);
    console.log(rez); // или просто выводить в лог
    console.log(sum(1,2));

    Побочные действия функций это те действия которые они осуществляют с окружением в котором вызваны, например то же сложение но результат записывается в переменную глобальной видимости, а не возвращается в виде результата

    var rez; function sum(a, b) { rez = a + b;
    } // функция еще не отработала значение `undefined`
    console.log(rez); // функция уже отработала однако видим значение `undefined` потому что функция ничего нам не возвращает
    console.log(sum(1, 2)); // видим тройку потому что во время работы функции в предыдущей инструкции она совершила побочное действие над переменной `var rez` присвоив ей сумму передаваемых параметров
    console.log(rez);

    Стоит отметить что в javascript функции всегда что то возвращают, если в теле инструкция return не задана явно то возвращаемое значение undefined

    Эти вещи могуть быть комбинированы, например

    function sum(a, b) { console.log('я посчитала'); return a + b;
    } console.log(sum(1, 2));

    Тут возврат суммы чисел прямое действие, а вывод сообщения в лог побочное.

    Теперь о вашем примере. У вас функция которая выполняет только побочные действия, в данном случае передавая в качестве параметров массив из четырех имен Вы попадаете в блок

    if (userNames.length > 3) { let loadingMessage = «This might take a while…»; console.log(loadingMessage);
    }

    И собственно получаете это сообщение в лог, однако так как Вы к функции обращаетесь тоже через console.log то второй строкой он выводит undefined так как функция ничего не возвращает.

    Перепишите пример так и Вы получите ожидаемый (я надеюсь 🙂 ) результат

    function loadProfiles(userNames){ if (userNames.length > 3) { let loadingMessage = «This might take a while…»; console.log(loadingMessage); } else { let flashMessage = «Loading profiles»; console.log(flashMessage); }
    } loadProfiles([«user1″,»user2″,»user3″,»user4»]);

    или так

    function loadProfiles(userNames) { if (userNames.length > 3) { let loadingMessage = «This might take a while…»; return loadingMessage; } else { let flashMessage = «Loading profiles»; return flashMessage; }
    } console.log(loadProfiles([«user1», «user2», «user3», «user4»]));

    Источник: https://ru.stackoverflow.com/q/524349

    [Перевод] Ошибки в JavaScript и как их исправить

    JavaScript может быть кошмаром при отладке: некоторые ошибки, которые он выдает, могут быть очень трудны для понимания с первого взгляда, и выдаваемые номера строк также не всегда полезны. Разве не было бы полезно иметь список, глядя на который, можно понять смысл ошибок и как исправить их? Вот он!

    ниже представлен список странных ошибок в javascript. Разные браузеры могут выдавать разные сообщения об одинаковых ошибках, поэтому приведено несколько примеров там, где возможно.

    Как читать ошибки?

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

    Типичная ошибка из chrome выглядит так:

    Uncaught TypeError: undefined is not a function

    структура ошибки следующая:

    1. Uncaught TypeError: эта часть сообщения обычно не особо полезна. Uncaught значит, что ошибка не была перехвачена в catch, а TypeError — это название ошибки.
    2. undefined is not a function: это та самая часть про ошибку. В случае с сообщениями об ошибках, читать их нужно прямо буквально. Например, в этом случае, она значит то, что код попытался использовать значение undefined как функцию.

    Другие webkit-браузеры, такие как Safari, выдают ошибки примерно в таком же формате, как и Chrome. Ошибки из Firefox похожи, но не всегда включают в себя первую часть, и последние версии internet Explorer также выдают более простые ошибки, но в этом случае проще — не всегда значит лучше.

    теперь к самим ошибкам.

    Uncaught TypeError: undefined is not a function

    Связанные ошибки: number is not a function, object is not a function, string is not a function, Unhandled Error: ‘foo’ is not a function, Function Expected

    Возникает при попытке вызова значения как функции, когда значение функцией не является. Например:

    var foo = undefined;
    foo();

    Эта ошибка обычно возникает, если вы пытаетесь вызвать функцию для объекта, но опечатались в названии.

    var x = document.getElementByID('foo');

    Несуществующие свойства объекта по-умолчанию имеют значение undefined, что приводит к этой ошибке.

    Другие вариации, такие как “number is not a function” возникают при попытке вызвать число, как будто оно является функцией.

    Как исправить ошибку: убедитесь в корректности имени функции. Для этой ошибки, номер строки обычно указывает в правильное место.

    Uncaught ReferenceError: Invalid left-hand side in assignment

    Связанные ошибки: Uncaught exception: ReferenceError: Cannot assign to ‘functionCall()’, Uncaught exception: ReferenceError: Cannot assign to ‘this’ Вызвано попыткой присвоить значение тому, чему невозможно присвоить значение.

    наиболее частый пример этой ошибки — это условие в if:

    if(doSomething() = 'somevalue')

    В этом примере программист случайно использовал один знак равенства вместо двух. выражение “left-hand side in assignment” относится к левой части знака равенства, а, как можно видеть в данном примере, левая часть содержит что-то, чему нельзя присвоить значение, что и приводит к ошибке.

    Как исправить ошибку: убедитесь, что вы не пытаетесь присвоить значение результату функции или ключевому слову this.

    Uncaught TypeError: converting circular structure to JSON

    Связанные ошибки: Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported

    Всегда вызвано циклической ссылкой в объекте, которая потом передается в JSON.stringify.

    var a = { };
    var b = { a: a };
    a.b = b;
    JSON.stringify(a);

    так как a и b в примере выше имеют ссылки друг на друга, результирующий объект не может быть приведен к JSON.

    Как исправить ошибку: удалите циклические ссылки, как в примере выше, из всех объектов, которые вы хотите сконвертировать в JSON.

    Unexpected token ;

    Связанные ошибки: Expected ), missing ) after argument list

    интерпретатор JavaScript что-то ожидал, но не обнаружил там этого. Обычно вызвано пропущенными фигурными, круглыми или квадратными скобками.

    Токен в данной ошибке может быть разным — может быть написано “Unexpected token ]”, “Expected {” или что-то еще.

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

    Ошибка с [ ] { } ( ) обычно вызвано несовпадающей парой. Проверьте, все ли ваши скобки имеют закрывающую пару. В этом случае, номер строки обычно указывает на что-то другое, а не на проблемный символ.

    Unexpected / связано с регулярными выражениями. Номер строки для данного случая обычно правильный.

    Unexpected; обычно вызвано символом; внутри литерала объекта или массива, или списка аргументов вызова функции. Номер строки обычно также будет верным для данного случая.

    Uncaught SyntaxError: Unexpected token ILLEGAL

    Связанные ошибки: Unterminated String literal, Invalid Line Terminator В строковом литерале пропущена закрывающая кавычка.

    Как исправить ошибку: убедитесь, что все строки имеют правильные закрывающие кавычки.

    Uncaught TypeError: Cannot read property ‘foo’ of null, Uncaught TypeError: Cannot read property ‘foo’ of undefined

    Связанные ошибки: TypeError: someVal is null, Unable to get property ‘foo’ of undefined or null reference

    попытка прочитать null или undefined так, как будто это объект. Например:

    var someVal = null;
    console.log(someVal.foo);

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

    Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined

    Связанные ошибки: TypeError: someVal is undefined, Unable to set property ‘foo’ of undefined or null reference

    Попытка записать null или undefined так, как будто это объект. Например:

    var someVal = null;
    someVal.foo = 1;

    Как исправить ошибку: это тоже обычно вызвано ошибками. Проверьте имена переменных рядом со строкой, указывающей на ошибку.

    Uncaught RangeError: Maximum call stack size exceeded

    Связанные ошибки: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow

    Обычно вызвано неправильно программной логикой, что приводит к бесконечному вызову рекурсивной функции.

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

    Uncaught URIError: URI malformed

    Связанные ошибки: URIError: malformed URI sequence Вызвано некорректным вызовом decodeURIComponent.

    Как исправить ошибку: убедитесь, что вызовы decodeURIComponent на строке ошибки получают корректные входные данные.

    XMLHttpRequest cannot load some/url/. No ‘Access-Control-Allow-Origin’ header is present on the requested resource

    Связанные ошибки: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at some/url/

    Эта проблема всегда связана с использованием XMLHttpRequest.

    Как исправить ошибку: убедитесь в корректности запрашиваемого URL и в том, что он удовлетворяет same-origin policy. хороший способ найти проблемный код — посмотреть на URL в сообщении ошибки и найти его в своём коде.

    InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

    Связанные ошибки: InvalidStateError, DOMException code 11

    Означает то, что код вызвал функцию, которую нельзя было вызывать в текущем состоянии. Обычно связано c XMLHttpRequest при попытке вызвать на нём функции до его готовности.

    var xhr = new XMLHttpRequest();
    xhr.setRequestHeader('Some-Header', 'val');

    В данном случае вы получите ошибку потому, что функция setRequestHeader может быть вызвана только после вызова xhr.open.

    Как исправить ошибку: посмотрите на код в строке, указывающей на ошибку, и убедитесь, что он вызывается в правильный момент или добавляет нужные вызовы до этого (как с xhr.open).

    Заключение

    JavaScript содержит в себе одни из самых бесполезных ошибок, которые я когда-либо видел, за исключением печально известной Expected T_PAAMAYIM_NEKUDOTAYIM в PHP.

    большая ознакомленность с ошибками привносит больше ясности. Современные браузеры тоже помогают, так как больше не выдают абсолютно бесполезные ошибки, как это было раньше.

    Какие самые непонятные ошибки вы встречали? Делитесь своими наблюдениями в комментариях.

    P.S. этот перевод можно улучшить, отправив PR здесь.

    Источник: http://habrahabr.ru/post/249525/

    Источник: http://it-technology.complexdoc.ru/2095408.html

    В чем разница между null и undefined в javascript?

    • undefined означает, что переменная была объявлена, но ей еще не присвоено значение.
    • null — значение присваивания. Он может быть назначен переменной как представление без значения.
    • undefined и null — два разных типа:

    undefined — это сам тип (undefined), а null — объект.

    • Неназначенные переменные инициализируются JavaScript со значением по умолчанию undefined.
    • JavaScript никогда не устанавливает значение null. Это должно быть сделано программно.

    Если переменная не инициализирована, она не определена. undefined не является объектом. Пример: var MyName; console.log (typeof MyName);

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

    null является aa объектом. Если вы хотите, чтобы какая-либо переменная была пустой, тогда используется значение null. Необязательная переменная существует, но значение не известно. Оно должно быть присвоено переменной про грамматически. null не инициализируется автоматически.

    Пример: var MyName = null; console.log (typeof MyName); Check the csole log in development tool, it will be an object.

    В JavasSript существует 5 примитивных типов данных String, Number, Boolean, null и undefined. Я попытаюсь объяснить с помощью простого примера

    скажем, мы имеем простую функцию

    function test(a) { if(a == null){ alert(«a is null»); } else { alert(«The value of a is » + a); } }

    также в вышеприведенной функции, если (a == null) совпадает с тем, что (! a)

    теперь, когда мы вызываем эту функцию без прохождения параметра a

    test(); it will alert «a is null»; test(4); it will alert «The value of a is » + 4;

    также

    var a;
    alert(typeof a);

    это даст неопределенный; мы объявили переменную, но мы не присвоили ей никакой ценности; но если мы напишем

    var a = null;
    alert(typeof a); will give alert as object

    поэтому null — это объект. таким образом мы присвоили значение null в 'a'

    Поскольку typeof возвращает undefined, undefined — это тип, где в качестве нулевого значения инициализатор указывает, что переменная не указывает на какой-либо объект (практически все в Javascript является объектом).

    ТЛ; др

    Используйте null для установки переменной, которую вы знаете, это объект.

    Используйте undefined для установки переменной, тип которой смешан.

    Это мое использование как 5 примитивов, так и типа объекта и объясняет разницу между «вариантом использования» undefined или null .

    строка

    Если вы знаете, что переменная является только строкой, а весь жизненный цикл, по соглашению, вы можете инициализировать ее, чтобы «» :

    («») ? true : false; // false
    typeof «»; // «string»;
    («Hello World») ? true : false; // true
    typeof «Hello World»; // «string»

    Число

    Если вы знаете, что переменная — это всего лишь число, в то время как весь жизненный цикл, по соглашению, вы можете инициализировать его, до 0 (или NaN если 0 является важным значением в вашем использовании):

    (0) ? true : false; // false
    typeof 0; // «number»;
    (16) ? true : false; // true
    typeof 16; // «number»

    или

    (NaN) ? true : false; // false
    typeof NaN; // «number»;
    (16) ? true : false; // true
    typeof 16; // «number»

    логический

    Если вы знаете, что переменная является только логической, тогда как весь жизненный цикл, по соглашению, вы можете инициализировать его, до false :

    (false) ? true : false; // false
    typeof false; // «boolean»;
    (true) ? true : false; // true
    typeof true; // «boolean»

    объект

    Если вы знаете, что переменная — это всего лишь объект, в то время как весь жизненный цикл, по соглашению, вы можете инициализировать его, до null :

    (null) ? true : false; // false
    typeof null; // «object»;
    ({}) ? true : false; // true
    typeof {}; // «object»

    Примечание: умное использование off null должно быть ложной версией объекта, потому что Object всегда true и потому, что typeof null возвращает object . Это означает, что typeof myVarObject возвращает непротиворечивое значение для типа Object и null.

    Все

    Если вы знаете, что переменная имеет смешанный тип (любой тип во время всего жизненного цикла), по соглашению вы можете инициализировать его до undefined .

    Null ВСЕГДА неизвестный объект, который существует в памяти, а undefined — нет.

    Я объясню undefined , null и Uncaught ReferenceError :

    1 — Uncaught ReferenceError : переменная не была объявлена в вашем скрипте, нет ссылки на эту переменную
    2 — undefined : переменная объявлена, но не инициализирована
    3 — null : переменная объявлена ​​и является пустым значением

    Разница между undefined и null минимальна, но есть разница. Переменная, значение которой undefined , никогда не инициализировалось. Переменной, значение которой является null было явно задано значение null , а это означает, что переменная была явно задана без значения. Если вы сравните undefined и null , используя выражение null==undefined , они будут равны.

    В javascript все переменные сохраняются как пары значений ключа. Каждая переменная хранится как variable_name: variable_value / reference .

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

    В этом случае, как обозначить, когда вы хотите, чтобы переменная была без значения в более поздней точке кода? Вы можете использовать тип null , который также является типом, который используется для определения того же объекта, отсутствия значения, но это не то же самое, что и undefined, так как в этом случае вы действительно имеете значение в памяти. Это значение равно нулю

    Оба они похожи, но использование и смысл разные.

    Undefined означает, что переменная была объявлена, но не имеет значения:

    var var1;
    alert(var1); //undefined
    alert(typeof var1); //undefined

    Null — это задание:

    var var2= null;
    alert(var2); //null
    alert(typeof var2); //object

    С JavaScript значение null для объектов, undefined для переменных, свойств и методов.

    Чтобы быть нулевым, объект должен быть определен, иначе он будет неопределенным.

    Если вы хотите проверить, существует ли объект, это вызовет ошибку, если объект не определен:

    Неправильно:

    if (myObj !== null && typeof myObj !== «undefined»)

    Из-за этого вы должны сначала проверить typeof ():

    Верный:

    if (typeof myObj !== «undefined» && myObj !== null)

    null : отсутствие значения для переменной; undefined : отсутствие самой переменной;

    .. where variable — это символическое имя, связанное со значением.

    JS может быть достаточно любезен, чтобы неявно инициализировать новые объявленные переменные с нулевым значением , но это не так.

    Хорошо, мы можем запутаться, когда мы услышим о null и undefined , но давайте начнем его просто, они оба ложны и похожи по-разному, но странная часть JavaScript, сделайте им пару существенных различий, например, typeof null — 'object' а typeof undefined — 'undefined' .

    typeof null; //»object»
    typeof undefined; //»undefined»;

    Но если вы проверите их с помощью == как показано ниже, вы увидите, что они оба фальшивы:

    null==undefined; //true

    Также вы можете присвоить значение null объекту или примитиву, в то время как undefined может быть просто достигнуто, не присваивая ничего.

    Я создаю быстрый образ, чтобы сразу показать различия для вас.

    Для undefined типа существует одно и только одно значение: undefined .

    Для null типа существует одно и только одно значение: null .

    Таким образом, для обоих из них ярлык является как его типом, так и его значением.

    Разница между ними. Например:

    • null — пустое значение
    • undefined — отсутствует значение

    Или:

    • undefined еще не имеет значения
    • null имеет значение и больше не имеет значения

    Фактически, null — это специальное ключевое слово , а не идентификатор, и поэтому вы не можете рассматривать его как переменную, которую нужно назначить.

    Однако undefined является идентификатором . Однако в non-strict режиме и в strict режиме вы можете создать локальную переменную имени undefined. Но это одна ужасная идея!

    function foo() { undefined = 2; // bad idea!
    } foo(); function foo() { «use strict»; undefined = 2; // TypeError!
    } foo();

    Источник: http://code.i-harness.com/ru/q/4d77d0

    undefined — это… Что такое undefined?

    • undefined — index equivocal, inconspicuous, indefinite, indeterminate, indistinct, nebulous, open ended, unclear …   Law dictionary
    • undefined — (adj.) 1610s, from UN (Cf. un ) (1) not + pp. of DEFINE (Cf. define) (v.) …   Etymology dictionary
    • undefined — ► ADJECTIVE ▪ not clear or defined. DERIVATIVES undefinable adjective …   English terms dictionary
    • undefined — [spelling only] …   English World dictionary
    • undefined — undefinedly /un di fuy nid lee, fuynd /, adv. undefinedness, n. /un di fuynd /, adj. 1. without fixed limits; indefinite in form, extent, or application: undefined authority; undefined feelings of sadness. 2. not given meaning or significance, as …   Universalium
    • undefined — un|de|fined [ ,ʌndı faınd ] adjective 1. ) not clearly explained, or without clear rules or limits: Her precise role in the project remains undefined. 2. ) without a clear shape or form: an undefined figure in the distance …   Usage of the words and phrases in modern English
    • undefined — adjective 1) some matters are still undefined Syn: unspecified, unexplained, unspecific, indeterminate, unsettled; unclear, woolly, imprecise, inexact, indefinite, vague, fuzzy Ant: definite, specific …   Thesaurus of popular words
    • undefined — UK [ˌʌndɪˈfaɪnd] / US adjective 1) not clearly explained, or without clear rules or limits Her precise role in the project remains undefined. 2) without a clear shape or form an undefined figure in the distance …   English dictionary
    • undefined — un•de•fined [[t]ˌʌn dɪˈfaɪnd[/t]] adj. 1) not defined or explained 2) indefinite in form or extent: an undefined feeling of sadness[/ex] • Etymology: 1605–15 un de•fin′ed•ly, adv. un de•fin′ed•ness, n …   From formal English to slang
    • undefined — adjective a) Lacking a definition or value b) That does not have a meaning and is thus not assigned an interpretation (for example, division by zero) Ant: defined …   Wiktionary
    • undefined — Synonyms and related words: aleatoric, aleatory, all knowing, all powerful, all seeing, all wise, almighty, amorphic, amorphous, anarchic, anonymous, baggy, blear, bleared, bleary, blobby, blurred, blurry, boundless, broad, chance, chancy,… …   Moby Thesaurus

    Источник: http://computers_en_ru.enacademic.com/14842/undefined

    undefined

    • undefined— русский перевод — bab.la словарь
      www.babla.ru

      Перевод undefined в русском бесплатном словаре и многие другие русские переводы.

    • undefinedперевод с английского на русский Англо-русский…
      english-dictionary.ru

      Онлайн-словарь английского языка — перевод слов и словосочетаний с английского языка на русский. Значение слова undefined.

    • undefined — что такое перевод undefined
      ru.dictionarist.com

      Undefined Перевод, Определение undefined, Что такое Перевод undefined на английском, на русский.

    • undefined — JavaScript MDN Mozilla Developer Network
      developer.mozilla.org

      Значение глобального свойства undefined представляет значение undefined. Это одно из примитивных значений JavaScript.

    • undefined != undefined :: Всё только о JavaScript
      alljs.ru

      undefined (неопределённое значение) — элементарное значение типа Undefined, используемое, когда переменной или свойства объекта не существует или ему ещё не было присвоено…

    • Ответы@Mail.Ru: что значит слово «undefined«
      otvet.mail.ru

      Undefined прил. 1) неопределённый, неустановленный, не получивший определения. Undefined crime юр. — преступление, состав которого не определён в нормах права.

    • undefined, undefined перевод с английского языка
      www.classes.ru

      undefined — неопределённый; произвольный- completely undefined— strongly undefined.

    • Undefined: перевод, произношение, транскрипция, примеры…
      WooordHunt.ru

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

    • Справочник javascript: undefined
      javascript.ru

      Как видно из примеров, определить, является ли значение undefined, можно строгим (тройным) знаком равенства.

    • Undefined Define Undefined at Dictionary.com
      www.dictionary.com

      Undefined definition, without fixed limits; indefinite in form, extent, or application: undefined authority; undefined feelings of sadness. See more.

    • undefined — это… Что такое undefined?
      dic.academic.ru

      1) неопределенный 2) произвольный 3) неопределяемый ∙ completely undefined function ≈ нигде не определенная функция.

    • undefined — с английского на русский
      translate.academic.ru

      undefined reverie — неясные мечты. 2. a не определённый, не зафиксированный. undefined crime — преступление, состав которого не сформулирован в нормах права.

    • Мы не несём ответственности за причинённый ущерб, который мог получить пользователь за посещение сторонних сайтов

    Источник: http://u3.kz/index.php?q=undefined

    Ссылка на основную публикацию