Analisis komprehensif null dalam JavaScript

WBOY
Lepaskan: 2022-09-13 19:47:00
ke hadapan
2855 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang javascript adalah jenis primitif, yang bermaksud ia sengaja tidak mengandungi sebarang nilai objek Mari kita lihat semua tentang null dalam JavaScript: Apakah maksudnya , bagaimana untuk mengesannya, perbezaan antara null dan undefined, dan mengapa penggunaan null secara meluas boleh menyebabkan kesukaran penyelenggaraan kod, dsb. Saya harap ia akan membantu semua orang.

Analisis komprehensif null dalam JavaScript

[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]

JavaScript Di sana ialah dua jenis Jenis: jenis primitif (strings, booleans, numbers, symbols) dan objek

Objek ialah struktur data yang kompleks. Objek JavaScript yang paling mudah ialah objek biasa - koleksi kunci dan nilai yang berkaitan

let myObject = {
  name: 'Eric Cartman'
};
Salin selepas log masuk

tetapi dalam banyak kes, objek tidak boleh dibuat. Dalam kes ini, JavaScript memberikan nilai istimewa null - menunjukkan bahawa objek

let myObject = null;
Salin selepas log masuk

tiada Dalam artikel ini, anda akan belajar tentang JavaScript dalam null Semuanya: apa itu bermakna, cara mengesannya, perbezaan antara null dan undefined, dan mengapa menggunakan banyak null boleh menyukarkan penyelenggaraan kod, dsb.

Konsep nol

JavaScript Spesifikasi mengatakan ini null

null ialah jenis primitif yang dengan sengaja tidak mengandungi sebarang nilai objek

Jika anda melihat null(diberikan kepada pembolehubah atau dikembalikan oleh fungsi), maka sepatutnya terdapat objek pada kedudukan itu, tetapi atas sebab tertentu, objek tidak dicipta

Sebagai contoh, fungsigreetObject() mencipta objek, tetapi ia juga boleh kembali apabila objek tidak boleh dibuat null:

function greetObject(who) {
  if (!who) {
    return null;
  }
  return { message: `Hello, ${who}!` };
}

greetObject('Eric'); // => { message: 'Hello, Eric!' }
greetObject();       // => null
Salin selepas log masuk

Apabila parameter rentetan dihantar dalam fungsi di atas, seperti yang dijangkakan, fungsi mengembalikan objek { message: 'Hello, Eric!' }

Walau bagaimanapun, tiada apa yang diluluskan dalam parameter fungsi, fungsi mengembalikan null. Mengembalikan null adalah munasabah kerana parameter who tidak mempunyai nilai, menyebabkan objek greeting tidak dapat dibuat

1.1 Metafora yang lebih sesuai untuk null

Pertimbangkan. satu tentang null Metafora yang lebih sesuai ialah anda boleh memikirkan pembolehubah sebagai kotak. Sama seperti pembolehubah boleh memuatkan objek, kotak boleh memuatkan barang seperti teko dsb.

Tetapi sebaik sahaja anda menerima kotak, bukanya, tiada sesiapa yang melakukan kesilapan dan memberi anda kotak kosong. Kotak itu tidak mengandungi sebarang kandungan, atau dalam erti kata lain, ia mengandungi nilai null

2. Bagaimana untuk mengesan null

Semak null Cara yang baik ialah menggunakan kesaksamaan yang ketat operator < Hasil daripada 🎜>

const missingObject = null;
const existingObject = { message: &#39;Hello!&#39; };

missingObject  === null; // => true
existingObject === null; // => false
Salin selepas log masuk

ialah missingObject === null kerana pembolehubah true mengandungi nilai missingObject. Jika pembolehubah mengandungi nilai bukan nol, seperti objek, hasil ungkapan null ialah existingObject === nullfalse

2.1 null ialah nilai palsu

dan null , 0, ", false, undefined adalah semua nilai palsu. Jika ia ditemui dalam pernyataan bersyarat, maka NaN akan memaksanya untuk JavaScriptfalse

Boolean(null); // => false

if (null) {
  console.log(&#39;null is truthy&#39;);
} else {
  console.log(&#39;null is falsy&#39;); // logs &#39;null is falsy&#39;
}
Salin selepas log masuk
2.2 jenis null

Operator jenis

boleh menentukan jenis nilai Contohnya, jenis 15 ialah typeof value dan number bersamaan dengan typeof { prop: &#39;Value&#39; }object jenis nilai ialah Apakah hasil

nulljenis null; // => ternyata

adalah seperti
adalah pepijat pada awal

pelaksanaan

Jangan gunakan operator

untuk mengesan nilai object Seperti yang dinyatakan sebelum ini, gunakan operator kesaksamaan yang ketat typoef nullobject<. 🎜>Jika anda ingin menggunakan JavaScript untuk menyemak sama ada pembolehubah ialah objek, anda mesti mengecualikan kes

typeofnull3 nullmyVar === null

Ini biasanya berlaku secara tidak dijangka apabila anda ingin menggunakan objek Kemudian jika anda cuba mengekstrak harta daripada typeof, null akan membuang ralat

function isObject(object) {
  return typeof object === &#39;object&#39; && object !== null;
}

isObject({ prop: &#39;Value&#39; }); // => true
isObject(15);                // => false
isObject(null);              // => false
Salin selepas log masuk
Mari gunakan. fungsi

sekali lagi dan cuba dapatkannya daripada Mengakses sifat

dalam objek yang dikembalikan TypeError

null Anda boleh mengendalikannya dengan menggunakan operator rantaian pilihan nullJavaScript

atau menggunakan dua alternatif yang diterangkan dalam bahagian seterusnya.

4. null 的替代方案

当你不能构造一个对象时,很容易返回 null。但这种做法也有缺点

一旦 null 出现在执行堆栈中,你总是必须检查它

我们尽量避免返回 null

  • 返回默认对象而不是 null
  • 抛出错误而不是返回 null

让我们回忆一下 greetObject() 函数返回 greeting 对象

当缺少参数时,可以返回一个默认对象,而不是返回 null

function greetObject(who) {
  if (!who) {
    who = &#39;Stranger&#39;;
  }
  return { message: `Hello, ${who}!` };
}

greetObject(&#39;Eric&#39;); // => { message: &#39;Hello, Eric!&#39; }
greetObject();       // => { message: &#39;Hello, Stranger!&#39; }
Salin selepas log masuk

或者抛出一个错误

function greetObject(who) {
  if (!who) {
    throw new Error(&#39;"who" argument is missing&#39;);
  }
  return { message: `Hello, ${who}!` };
}

greetObject(&#39;Eric&#39;); // => { message: &#39;Hello, Eric!&#39; }
greetObject();       // => throws an error
Salin selepas log masuk

这些实践可以让你完全避免处理 null

5. null vs undefined

undefined 就是未初始化的变量或对象属性的值

例如,如果在声明变量时没有赋初值,那么访问该变量的结果为 undefined

let myVariable;

myVariable; // => undefined
Salin selepas log masuk

nullundefined 之间的主要区别是,null 表示丢失了的对象,而 undefined 表示未初始化的状态

严格相等运算符 === 区分 nullundefined

null === undefined; // => false
Salin selepas log masuk

而松散相等运算符 == 则认为 nullundefined 相等

null == undefined; // => true
Salin selepas log masuk

我使用松散相等运算符检查变量是否为 nullundefined

function isEmpty(value) {
  return value == null;
}

isEmpty(42);                // => false
isEmpty({ prop: &#39;Value&#39; }); // => false
isEmpty(null);              // => true
isEmpty(undefined);         // => true
Salin selepas log masuk

6. 总结

nullJavaScript 中的一个特殊值,表示丢失的对象

严格相等运算符判断变量是否为空: variable === null

typoef 操作符用于确定变量的类型(number, string, boolean)。但是,typeofnull 情况下会引起误解: typeof null 结果为 object

nullundefined 在某种程度上是等价的,但null 表示一个丢失的对象,而 undefined 表示未初始化状态

尽可能避免返回 null 或将变量设置为 null。因为这种做法会导致 null 值的扩展和需要对 null 的验证。相反,尝试使用具有默认属性的对象,或者甚至抛出错误会是更好的实践

你会使用什么方法来检查 null?

【相关推荐:javascript视频教程web前端

Atas ialah kandungan terperinci Analisis komprehensif null dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:jb51.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!