Дійсно перевірити, якщо undefined з typeof

Яке краще рішення?

if(typeof bla === "undefined" || bla === null)...

Or

if(bla)...

Якщо я роблю друге рішення, чи дійсно потрібно перевірити, чи є його невизначеним?

Дякую.

0
"Дійсно перевірити, якщо не визначено" ... Ви маєте на увазі, або ви маєте на увазі "undefined або null", оскільки ви перевіряєте на null теж у цих прикладах.
додано Автор James Allardice, джерело
"Дійсно перевірити, якщо не визначено" ... Ви маєте на увазі, або ви маєте на увазі "undefined або null", оскільки ви перевіряєте на null теж у цих прикладах.
додано Автор James Allardice, джерело
"Дійсно перевірити, якщо не визначено" ... Ви маєте на увазі, або ви маєте на увазі "undefined або null", оскільки ви перевіряєте на null теж у цих прикладах.
додано Автор James Allardice, джерело
Відповідь "це залежить від того, що саме ви намагаєтеся зробити".
додано Автор karim79, джерело
Відповідь "це залежить від того, що саме ви намагаєтеся зробити".
додано Автор karim79, джерело
Властивість, якщо вона не має визначення, є невизначеною. Покладіть так, це досить очевидно. null - це об'єкт. Це тип null. undefined не є об'єктом, його тип є невизначеним. Ця частина менш очевидна. stackoverflow.com/questions/6429225/…
додано Автор Leonardo Da Codinchi, джерело
Властивість, якщо вона не має визначення, є невизначеною. Покладіть так, це досить очевидно. null - це об'єкт. Це тип null. undefined не є об'єктом, його тип є невизначеним. Ця частина менш очевидна. stackoverflow.com/questions/6429225/…
додано Автор Leonardo Da Codinchi, джерело
Властивість, якщо вона не має визначення, є невизначеною. Покладіть так, це досить очевидно. null - це об'єкт. Це тип null. undefined не є об'єктом, його тип є невизначеним. Ця частина менш очевидна. stackoverflow.com/questions/6429225/…
додано Автор Leonardo Da Codinchi, джерело

11 Відповіді

Це залежить від того, що ви очікуєте містити змінну.

Якщо він, наприклад, міститиме об'єкт, другий варіант працює відмінно, оскільки будь-яка посилання на об'єкт є правдивою.

Якщо він, наприклад, міститиме логічне значення, другий варіант взагалі не буде працювати, оскільки false дасть той самий результат, що і неіснуюче значення.

3
додано
Так що, щоб бути впевненим, перевірте на undefined і null це краще рішення?
додано Автор Christian, джерело
@Christian: Це залежить від того, що ви повинні бути впевнені. Не існує ідеального методу, який би працював у всіх ситуаціях. Значення null може бути, наприклад, цілком допустимим значенням у деяких ситуаціях.
додано Автор Guffa, джерело

Це залежить від того, що ви очікуєте містити змінну.

Якщо він, наприклад, міститиме об'єкт, другий варіант працює відмінно, оскільки будь-яка посилання на об'єкт є правдивою.

Якщо він, наприклад, міститиме логічне значення, другий варіант взагалі не буде працювати, оскільки false дасть той самий результат, що і неіснуюче значення.

3
додано
Так що, щоб бути впевненим, перевірте на undefined і null це краще рішення?
додано Автор Christian, джерело
@Christian: Це залежить від того, що ви повинні бути впевнені. Не існує ідеального методу, який би працював у всіх ситуаціях. Значення null може бути, наприклад, цілком допустимим значенням у деяких ситуаціях.
додано Автор Guffa, джерело

Це залежить від того, що ви очікуєте містити змінну.

Якщо він, наприклад, міститиме об'єкт, другий варіант працює відмінно, оскільки будь-яка посилання на об'єкт є правдивою.

Якщо він, наприклад, міститиме логічне значення, другий варіант взагалі не буде працювати, оскільки false дасть той самий результат, що і неіснуюче значення.

3
додано
Так що, щоб бути впевненим, перевірте на undefined і null це краще рішення?
додано Автор Christian, джерело
@Christian: Це залежить від того, що ви повинні бути впевнені. Не існує ідеального методу, який би працював у всіх ситуаціях. Значення null може бути, наприклад, цілком допустимим значенням у деяких ситуаціях.
додано Автор Guffa, джерело

Це залежить від того, що ви очікуєте містити змінну.

Якщо він, наприклад, міститиме об'єкт, другий варіант працює відмінно, оскільки будь-яка посилання на об'єкт є правдивою.

Якщо він, наприклад, міститиме логічне значення, другий варіант взагалі не буде працювати, оскільки false дасть той самий результат, що і неіснуюче значення.

3
додано
Так що, щоб бути впевненим, перевірте на undefined і null це краще рішення?
додано Автор Christian, джерело
@Christian: Це залежить від того, що ви повинні бути впевнені. Не існує ідеального методу, який би працював у всіх ситуаціях. Значення null може бути, наприклад, цілком допустимим значенням у деяких ситуаціях.
додано Автор Guffa, джерело

Щоб "перевірити, якщо не визначено" , найкращим рішенням зазвичай є третій:

Демонстрація

function isDef(obj) {
    var undefined;
    return obj === undefined;
}

Це перевіряє, якщо об'єкт не визначений без втрати часу за допомогою typeof , і цей тест не перевіряється як істинний за допомогою "" , null , NaN або 0 , як і ваш другий тест.

Єдиний недолік полягає в тому, що хтось може перекрити глобальний об'єкт undefined . Неможливо в жорсткому режимі ES5, але ваш код повинен захищати від цього. Теневе undefined із визначенням локального var undefined; робить це для вас.

Також, використовуючи функцію isDef , ви дозволяєте краще, портативну мініфікацію і простішу логіку.

if (isDef(x)) {
   //do something
} else {
   //do something else
};
0
додано
@smerny На мою думку, ця лінія є марним захистом. Як невизначене не може бути перевизначено в глобальній області, це простіше і простіше просто перевірити obj === undefined.
додано Автор Denys Séguret, джерело
що додає рядок var undefined; ?
додано Автор smerny, джерело

Щоб "перевірити, якщо не визначено" , найкращим рішенням зазвичай є третій:

Демонстрація

function isDef(obj) {
    var undefined;
    return obj === undefined;
}

Це перевіряє, якщо об'єкт не визначений без втрати часу за допомогою typeof , і цей тест не перевіряється як істинний за допомогою "" , null , NaN або 0 , як і ваш другий тест.

Єдиний недолік полягає в тому, що хтось може перекрити глобальний об'єкт undefined . Неможливо в жорсткому режимі ES5, але ваш код повинен захищати від цього. Теневе undefined із визначенням локального var undefined; робить це для вас.

Також, використовуючи функцію isDef , ви дозволяєте краще, портативну мініфікацію і простішу логіку.

if (isDef(x)) {
   //do something
} else {
   //do something else
};
0
додано
@smerny На мою думку, ця лінія є марним захистом. Як невизначене не може бути перевизначено в глобальній області, це простіше і простіше просто перевірити obj === undefined.
додано Автор Denys Séguret, джерело
що додає рядок var undefined; ?
додано Автор smerny, джерело

Щоб "перевірити, якщо не визначено" , найкращим рішенням зазвичай є третій:

Демонстрація

function isDef(obj) {
    var undefined;
    return obj === undefined;
}

Це перевіряє, якщо об'єкт не визначений без втрати часу за допомогою typeof , і цей тест не перевіряється як істинний за допомогою "" , null , NaN або 0 , як і ваш другий тест.

Єдиний недолік полягає в тому, що хтось може перекрити глобальний об'єкт undefined . Неможливо в жорсткому режимі ES5, але ваш код повинен захищати від цього. Теневе undefined із визначенням локального var undefined; робить це для вас.

Також, використовуючи функцію isDef , ви дозволяєте краще, портативну мініфікацію і простішу логіку.

if (isDef(x)) {
   //do something
} else {
   //do something else
};
0
додано
@smerny На мою думку, ця лінія є марним захистом. Як невизначене не може бути перевизначено в глобальній області, це простіше і простіше просто перевірити obj === undefined.
додано Автор Denys Séguret, джерело
що додає рядок var undefined; ?
додано Автор smerny, джерело

Щоб "перевірити, якщо не визначено" , найкращим рішенням зазвичай є третій:

Демонстрація

function isDef(obj) {
    var undefined;
    return obj === undefined;
}

Це перевіряє, якщо об'єкт не визначений без втрати часу за допомогою typeof , і цей тест не перевіряється як істинний за допомогою "" , null , NaN або 0 , як і ваш другий тест.

Єдиний недолік полягає в тому, що хтось може перекрити глобальний об'єкт undefined . Неможливо в жорсткому режимі ES5, але ваш код повинен захищати від цього. Теневе undefined із визначенням локального var undefined; робить це для вас.

Також, використовуючи функцію isDef , ви дозволяєте краще, портативну мініфікацію і простішу логіку.

if (isDef(x)) {
   //do something
} else {
   //do something else
};
0
додано
@smerny На мою думку, ця лінія є марним захистом. Як невизначене не може бути перевизначено в глобальній області, це простіше і простіше просто перевірити obj === undefined.
додано Автор Denys Séguret, джерело
що додає рядок var undefined; ?
додано Автор smerny, джерело
    

Чи дійсно потрібно перевірити, чи не визначено його значення?

  

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

0
додано
    

Чи дійсно потрібно перевірити, чи не визначено його значення?

  

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

0
додано
    

Чи дійсно потрібно перевірити, чи не визначено його значення?

  

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

0
додано
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram