Як перевірити змінну , якщо вона
nullабоundefinedі те , що різниця міжnullіundefined?У чому різниця між
==і===(важко шукати в Google "===")?
Як перевірити змінну , якщо вона nullабо undefinedі те , що різниця між nullі undefined?
У чому різниця між ==і ===(важко шукати в Google "===")?
Відповіді:
Як перевірити змінну , якщо це
nullабоundefined...
Чи є змінною null:
if (a === null)
// or
if (a == null) // but see note below
... але зауважте, що останнє також буде правдивим, якщо aє undefined.
Це undefined:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
... але ще раз зауважте, що останній розпливчастий; це також буде правдою, якщо aє null.
Тепер, незважаючи на вищезазначене, звичайний спосіб перевірити їх - використовувати той факт, що вони фальсифікують :
if (!a) {
// `a` is falsey, which includes `undefined` and `null`
// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
Це визначено ToBoolean у специфікації.
... і в чому різниця між
nullіundefined?
Вони обидва значення зазвичай використовуються для позначення відсутності чогось. undefinedє більш загальним, використовуваним як значення за замовчуванням змінних, поки їм не буде призначено якесь інше значення, як значення аргументів функції, які не були надані під час виклику функції, і як значення, яке ви отримуєте, коли запитуєте об'єкт для власності, якої він не має. Але він також може бути явно використаний у всіх цих ситуаціях. (Існує різниця між об'єктом, який не має властивості, і властивістю зі значенням undefined; є різниця між викликом функції зі значеннямundefined для аргументу та цілком відключеним аргументом.)
nullдещо конкретніше, ніж undefined: Це пустий посилання на об'єкт. Звичайно, JavaScript вводиться неважливо, але не всі речі, з якими JavaScript взаємодіє, є набраними. Якщо такий API, як DOM у браузерах, потребує порожньої посилання на об'єкт, ми використовуємо null, не undefined. Аналогічно, getElementByIdоперація DOM повертає посилання на об'єкт - чи дійсну (якщо вона знайшла елемент DOM), або null(якщо вона не була).
Цікаво (чи ні), що вони є власними типами. Що означає, nullце єдине значення типу Null і undefinedє єдиним значенням у типі Undefined.
Яка різниця між "==" та "==="
Єдина відмінність між ними полягає в тому, що ==буде вводити примус, щоб спробувати зрівняти значення, а ===не буде. Так, наприклад "1" == 1, правда, тому що "1"примушує до1 . Але "1" === 1це помилково , оскільки типи не відповідають. ( "1" !== 1вірно.) Першим (реальним) кроком ===є "Чи типи операндів однакові?" і якщо відповідь "ні", результат є false. Якщо типи однакові, він робить саме те, що== робить.
Типовий примус використовує досить складні правила і може мати дивовижні результати (наприклад, "" == 0 це правда).
Детальніше в специфікації:
== також називається "вільною" рівністю)===)if (a) { ... }означатиме "якщо aє truthy", де "truthy" - значення, яке не є нулем, не має значення, не визначається, не відповідає помилці, не містить порожнього рядка. :-)
nullце не об'єкт , це посилання на об'єкт, що означає "немає об'єкта". Це важливо, адже це те, що використовується з наданими хостом інтерфейсами, коли вони надають посилання на об'єкти, але не мають їх надати (наприклад, node.nextSiblingколи nodeостанній елемент у його батьківському або getElementByIdколи немає елемента з цим ідентифікатором). Технологія, яку хост використовує для цього, може бути не такою гнучкою, оскільки JavaScript стосується типів змінних / властивостей, тому потрібно було мати nullref-ref (на відміну від undefined).
typeof nullповернення "об'єкта" має сенс. Єдине інше значення, яке мало б сенс, було б "null", оскільки воно, безумовно, повинно повернути щось інше від typeof undefined. null являє собою посилання на null об'єкт, що, принаймні, означає, що змінна, утримує його, призначена для певного типу "об'єкта". Якщо це була помилка, то це була гарна помилка. У будь-якому випадку, стосовно відповіді, підказку про undefined! == undefinedпід час перехресних сценаріїв добре знати, особливо для налагодження.
Різниця тонка.
У JavaScript undefinedзмінна - це змінна, яка як ніколи не була оголошена або ніколи не присвоювала значення. Скажімо, ви заявляєте, var a;наприклад, тоді aбудеundefined , тому що ніколи не було призначено жодного значення.
Але якщо потім призначити, a = null;то aтепер буде null. У JavaScript null- об’єкт (спробуйте typeof nullв консолі JavaScript, якщо ви мені не вірите), це означає, що null - це значення (насправді навітьundefined це значення).
Приклад:
var a;
typeof a; # => "undefined"
a = null;
typeof null; # => "object"
Це може виявитися корисним у аргументах функцій. Ви можете мати значення за замовчуванням, але вважати нуль прийнятним. У такому випадку ви можете:
function doSomething(first, second, optional) {
if (typeof optional === "undefined") {
optional = "three";
}
// do something
}
Якщо ви опустите optionalпараметр, doSomething(1, 2) thenнеобов’язковим буде "three"рядок, але якщо ви перейдете, doSomething(1, 2, null)то необов'язковим будеnull .
Що стосується рівних ==і строго рівних ===компараторів, то перший - слабкого типу, тоді як строго рівний також перевіряє тип значень. Це означає, що 0 == "0"повернеться правдою; поки 0 === "0"поверне помилкове значення, оскільки число не є рядком.
Ви можете використовувати ці оператори , щоб перевірити між . Наприклад:undefinednull
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
Останній випадок цікавий тим, що дозволяє перевірити, чи змінна або не визначена, або нульова, і нічого іншого:
function test(val) {
return val == null;
}
test(null); # => true
test(undefined); # => true
Специфікація - це місце, де можна отримати повні відповіді на ці питання. Ось підсумок:
xможна:nullшляхом прямого порівняння, використовуючи=== . Приклад:x === nullundefinedза допомогою двох основних методів: прямого порівняння з undefinedабо typeof. З різних причин я віддаю перевагуtypeof x === "undefined" .nullі undefined, використовуючи ==та покладаючись на злегка таємні правила примусу, які означають, x == nullробить саме те, що ви хочете.==і ===полягає в тому, що якщо операнди різного типу, ===вони завжди повернуться, falseтоді як ==перетворять один або обидва операнди в один і той же тип, використовуючи правила, що призводять до деякої трохи неінтуїтивної поведінки. Якщо операнди одного типу (наприклад, обидва є рядками, такими як у typeofпорівнянні вище), ==і ===будуть вести себе абсолютно однаково.Більше читання:
Як перевірити змінну, якщо вона є нульовою чи невизначеною
просто перевірте, чи має змінна дійсне значення, як це:
if(variable)
він повернеться істинним, якщо змінна не містить:
невизначений
Це означає, що змінна ще не використовується.
Приклад:
var x;
if(x){ //you can check like this
//code.
}
дорівнює (==)
Це лише контрольне значення дорівнює не типу даних.
Приклад:
var x = true;
var y = new Boolean(true);
x == y ; //returns true
Тому що він перевіряє лише значення.
Строгі рівні (===)
Перевірки значення та типу даних повинні бути однаковими.
Приклад:
var x = true;
var y = new Boolean(true);
x===y; //returns false.
Оскільки він перевіряє тип даних x - примітивний тип, y - бульний об'єкт.
Оголошення 1. nullне є ідентифікатором властивості глобального об'єкта, як undefined може бути
Оголошення 2. ===Контрольні значення та типи. До ==порівняння (використання .valueOf()та .toString()) не потрібно вимагати однакових типів і здійснювати неявну конверсію . Тут у вас є всі ( src ):
якщо
== (його заперечення ! = )
=== (його заперечення ! == )
document.all == nullіdocument.all !== null
Якщо ваша (логічна) перевірка має заперечення (!), І ви хочете захопити як JS, так nullі undefined (оскільки різні браузери дадуть вам різні результати), ви використовуєте менш обмежувальне порівняння: наприклад:
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
Це охопить і те, nullіundefined
Спробуйте з різною логікою . Ви можете використовувати наступний код для перевірки всіх чотирьох (4) умов для перевірки, як не null, not blank, not undefined and not zero, використовуйте лише цей код (! (! (Змінна))) у javascript та jquery.
function myFunction() {
var data; //The Values can be like as null, blank, undefined, zero you can test
if(!(!(data)))
{
//If data has valid value
alert("data "+data);
}
else
{
//If data has null, blank, undefined, zero etc.
alert("data is "+data);
}
}
==і===тут добре описана .