Sebagian besar bahasa modern seperti Ruby, Python, atau Java memiliki satu nilai nol (
javascript
typeof undefined === 'undefined'; // => true
5 ataujavascript
typeof undefined === 'undefined'; // => true
6), yang tampaknya merupakan pendekatan yang masuk akalTetapi JavaScript berbeda
javascript
typeof undefined === 'undefined'; // => true
6, tetapi jugajavascript
typeof undefined === 'undefined'; // => true
8, mewakili nilai kosong dalam JavaScript. Jadi apa perbedaan yang tepat di antara mereka?Jawaban singkatnya adalah bahwa juru bahasa JavaScript mengembalikan
javascript
typeof undefined === 'undefined'; // => true
8 saat mengakses properti variabel atau objek yang belum diinisialisasi. Sebagai contohjavascript
let company;
company; // => undefined
let person = { name: 'John Smith' };
person.age; // => undefined
Di sisi lain,
javascript
typeof undefined === 'undefined'; // => true
_6 mewakili referensi objek yang hilang. JavaScript tidak menginisialisasi variabel atau properti objek denganjavascript
typeof undefined === 'undefined'; // => true
6Beberapa metode asli seperti
javascript
let nothing;
typeof nothing === 'undefined'; // => true
2 dapat mengembalikanjavascript
typeof undefined === 'undefined'; // => true
6 untuk menunjukkan objek yang hilang. Lihatlah sampelnyajavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
Karena JavaScript permisif, pengembang tergoda untuk mengakses nilai yang tidak diinisialisasi. Saya bersalah atas praktik buruk seperti itu juga
Seringkali tindakan berisiko tersebut menghasilkan
javascript
typeof undefined === 'undefined'; // => true
8 kesalahan terkaitjavascript
let nothing;
typeof nothing === 'undefined'; // => true
_5javascript
let nothing;
typeof nothing === 'undefined'; // => true
_6- dan kesalahan jenis yang sama
Pengembang JavaScript dapat memahami ironi lelucon ini
javascript
function undefined() {
// problem solved
}
Untuk mengurangi kesalahan tersebut, Anda harus memahami kasus ketika
javascript
typeof undefined === 'undefined'; // => true
8 dihasilkan. Mari jelajahijavascript
typeof undefined === 'undefined'; // => true
_8 dan pengaruhnya terhadap keamanan kodeDaftar isi
1. Apa yang tidak terdefinisi
JavaScript memiliki 6 tipe primitif
- Boolean.
javascript
let nothing;
typeof nothing === 'undefined'; // => true
_9 ataujavascript
let myVariable;
myVariable; // => undefined
0 - Nomor.
javascript
let myVariable;
myVariable; // => undefined
1,javascript
let myVariable;
myVariable; // => undefined
2,javascript
let myVariable;
myVariable; // => undefined
3 - Rangkaian.
javascript
let myVariable;
myVariable; // => undefined
_4 - Simbol.
javascript
let myVariable;
myVariable; // => undefined
_5 (mulai ES2015) - Batal.
javascript
typeof undefined === 'undefined'; // => true
_6 - Belum diartikan.
javascript
typeof undefined === 'undefined'; // => true
_8
Dan jenis objek yang terpisah.
javascript
let myVariable;
myVariable; // => undefined
8,javascript
let myVariable;
myVariable; // => undefined
9Dari 6 tipe primitif
javascript
typeof undefined === 'undefined'; // => true
_8 adalah nilai khusus dengan tipenya sendiri Tidak terdefinisi. BerdasarkanNilai primitif nilai tidak terdefinisi digunakan ketika variabel belum diberi nilai
Standar dengan jelas mendefinisikan bahwa Anda akan menerima
javascript
typeof undefined === 'undefined'; // => true
8 saat mengakses variabel yang tidak diinisialisasi, properti objek yang tidak ada, elemen array yang tidak ada, dan sejenisnyaBeberapa contoh
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
Contoh di atas menunjukkan bahwa mengakses
- variabel yang tidak diinisialisasi
javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
2 - properti objek yang tidak ada
javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
3 - atau elemen larik yang tidak ada
javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
4
dievaluasi menjadi
javascript
typeof undefined === 'undefined'; // => true
8Spesifikasi ECMAScript menentukan jenis nilai
javascript
typeof undefined === 'undefined'; // => true
8Jenis yang tidak terdefinisi adalah jenis yang nilai tunggalnya adalah nilai
javascript
typeof undefined === 'undefined'; // => true
8
Dalam pengertian ini, operator
javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
_8 mengembalikan stringjavascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
9 untuk nilaijavascript
typeof undefined === 'undefined'; // => true
8javascript
typeof undefined === 'undefined'; // => true
Tentu saja
javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
8 berfungsi dengan baik untuk memverifikasi apakah suatu variabel berisi nilaijavascript
typeof undefined === 'undefined'; // => true
8javascript
let nothing;
typeof nothing === 'undefined'; // => true
_2. Skenario yang membuat tidak terdefinisi
2. 1 Variabel yang tidak diinisialisasi
Variabel yang dideklarasikan tetapi belum ditetapkan dengan nilai (tidak diinisialisasi) secara default adalah
javascript
typeof undefined === 'undefined'; // => true
8
Polos dan sederhana
javascript
let myVariable;
myVariable; // => undefined
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_4 dideklarasikan dan belum diberi nilai. Mengakses variabel mengevaluasi kejavascript
typeof undefined === 'undefined'; // => true
8Pendekatan yang efisien untuk memecahkan masalah variabel yang tidak diinisialisasi adalah bila memungkinkan dengan menetapkan nilai awal. Semakin sedikit variabel yang ada dalam keadaan tidak diinisialisasi, semakin baik
Idealnya, Anda akan menetapkan nilai segera setelah deklarasi
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
6. Tapi itu tidak selalu memungkinkanKiat 1. Pilih
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
7, jika tidak, gunakanjavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8, tetapi ucapkan selamat tinggal padajavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
9Menurut pendapat saya, salah satu fitur terbaik ECMAScript 2015 adalah cara baru untuk mendeklarasikan variabel menggunakan
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
7 danjavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8. Ini adalah langkah maju yang besarjavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
7 danjavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8 adalah cakupan blok (berlawanan dengan cakupan fungsi yang lebih lamajavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
9) dan ada di baris deklarasi sampaiSaya merekomendasikan variabel
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_7 ketika nilainya tidak akan berubah. Itu menciptakan ikatan yang tidak dapat diubahSalah satu fitur bagus dari
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_7 adalah Anda harus menetapkan nilai awal ke variabeljavascript
function bigFunction() {
// code...
myVariable; // => Throws 'ReferenceError: myVariable is not defined'
// code...
let myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
7. Variabel tidak terpapar ke keadaan yang tidak diinisialisasi dan mengaksesjavascript
typeof undefined === 'undefined'; // => true
8 tidak mungkinMari kita periksa fungsi yang memverifikasi apakah suatu kata adalah palindrom
javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
javascript
function bigFunction() {
// code...
myVariable; // => Throws 'ReferenceError: myVariable is not defined'
// code...
let myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
9 danjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
00 variabel ditugaskan dengan nilai sekali. Tampaknya masuk akal untuk mendeklarasikannya sebagaijavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
7 karena variabel ini tidak akan berubahGunakan deklarasi
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_8 untuk variabel yang nilainya dapat berubah. Kapan pun memungkinkan, tetapkan nilai awal segera, mis. g.javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_03Bagaimana dengan sekolah lama
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_9?javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_9 masalah deklarasi berada dalam lingkup fungsi. Anda dapat mendeklarasikan variabeljavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_9 di suatu tempat di akhir cakupan fungsi, tetapi tetap saja, Anda dapat mengaksesnya sebelum deklarasi. dan Anda akan mendapatkanjavascript
typeof undefined === 'undefined'; // => true
_8javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_4 dapat diakses dan berisijavascript
typeof undefined === 'undefined'; // => true
8 bahkan sebelum baris deklarasi.javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_10Sebaliknya, variabel
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_7 ataujavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8 tidak dapat diakses sebelum baris deklarasi — variabel berada di sebelum deklarasi. Dan itu bagus karena Anda memiliki lebih sedikit kesempatan untuk mengaksesjavascript
typeof undefined === 'undefined'; // => true
8Contoh di atas diperbarui dengan
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_8 (bukanjavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
9) melemparjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
16 karena variabel di zona mati temporal tidak dapat diaksesjavascript
function bigFunction() {
// code...
myVariable; // => Throws 'ReferenceError: myVariable is not defined'
// code...
let myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
Mendorong penggunaan
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_7 untuk pengikatan yang tidak dapat diubah ataujavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8 memastikan praktik yang mengurangi munculnya variabel yang tidak diinisialisasiKiat 2. Meningkatkan kohesi
Kohesi mencirikan sejauh mana elemen-elemen modul (ruang nama, kelas, metode, blok kode) dimiliki bersama. Kohesi bisa tinggi atau rendah
Modul kohesi tinggi lebih disukai karena elemen-elemen dari modul semacam itu hanya berfokus pada satu tugas. Itu membuat modul
- Fokus dan dapat dimengerti. lebih mudah untuk memahami apa modul tidak
- Dapat dipertahankan dan lebih mudah untuk di-refactor. perubahan modul mempengaruhi lebih sedikit modul
- Dapat digunakan kembali. difokuskan pada satu tugas, itu membuat modul lebih mudah untuk digunakan kembali
- Dapat diuji. Anda akan lebih mudah menguji modul yang berfokus pada satu tugas
Kohesi tinggi disertai kopling longgar adalah karakteristik dari sistem yang dirancang dengan baik
Blok kode dapat dianggap sebagai modul kecil. Untuk mendapatkan manfaat dari kohesi tinggi, pertahankan variabel sedekat mungkin dengan blok kode yang menggunakannya
Misalnya, jika variabel hanya ada untuk membentuk logika cakupan blok, maka deklarasikan dan buat variabel hidup hanya di dalam blok itu (menggunakan deklarasi
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
7 ataujavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8). Jangan paparkan variabel ini ke lingkup blok luar, karena blok luar seharusnya tidak peduli dengan variabel iniSalah satu contoh klasik dari perpanjangan umur variabel yang tidak perlu adalah penggunaan
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
21 siklus di dalam suatu fungsijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_0javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_22,javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
23 danjavascript
function bigFunction() {
// code...
myVariable; // => Throws 'ReferenceError: myVariable is not defined'
// code...
let myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
9 variabel dideklarasikan di awal badan fungsi. Namun, mereka hanya digunakan menjelang akhir. Apa masalahnya dengan pendekatan ini?Antara deklarasi di atas dan penggunaan dalam pernyataan
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
21 variabeljavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
22,javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
23 tidak diinisialisasi dan diekspos kejavascript
typeof undefined === 'undefined'; // => true
8. Mereka memiliki siklus hidup yang sangat panjang di seluruh cakupan fungsiPendekatan yang lebih baik adalah memindahkan variabel-variabel ini sedekat mungkin ke tempat penggunaannya
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_1javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_22 danjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
23 variabel hanya ada dalam lingkup blok pernyataanjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
21. Mereka tidak memiliki arti di luar ________10______21javascript
function bigFunction() {
// code...
myVariable; // => Throws 'ReferenceError: myVariable is not defined'
// code...
let myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
9 variabel dideklarasikan dekat dengan sumber penggunaannya jugaMengapa versi modifikasi lebih baik dari versi awal?
- Variabel tidak terpapar ke keadaan tidak diinisialisasi, sehingga Anda tidak berisiko mengakses
javascript
typeof undefined === 'undefined'; // => true
8 - Memindahkan variabel sedekat mungkin ke tempat penggunaannya meningkatkan keterbacaan kode
- Potongan kode kohesif yang tinggi lebih mudah untuk direfaktorisasi dan diekstraksi menjadi fungsi terpisah, jika perlu
2. 2 Mengakses properti yang tidak ada
Saat mengakses properti objek yang tidak ada, JavaScript mengembalikan
javascript
typeof undefined === 'undefined'; // => true
8
Mari kita tunjukkan itu dalam sebuah contoh
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_2javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_36 adalah objek dengan properti tunggaljavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
37. Mengakses properti yang tidak adajavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_38 menggunakan pengakses propertijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
39 dievaluasi menjadijavascript
typeof undefined === 'undefined'; // => true
8Mengakses properti yang tidak ada tidak menimbulkan kesalahan. Masalah muncul saat mencoba mendapatkan data dari properti yang tidak ada, yang merupakan jebakan
javascript
typeof undefined === 'undefined'; // => true
8 yang paling umum, tercermin dalam pesan kesalahan terkenaljavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
42Mari sedikit memodifikasi cuplikan kode sebelumnya untuk mengilustrasikan lemparan
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
43javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_3javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_36 tidak memiliki propertijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
38, jadijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
39 dievaluasi menjadijavascript
typeof undefined === 'undefined'; // => true
8Akibatnya, mengakses item pertama dari nilai
javascript
typeof undefined === 'undefined'; // => true
8 menggunakan ekspresijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
49 melemparjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
43Sifat permisif JavaScript yang memungkinkan mengakses properti yang tidak ada adalah sumber nondeterminisme. properti dapat diatur atau tidak. Cara yang baik untuk melewati masalah ini adalah membatasi objek untuk selalu menentukan properti yang dimilikinya
Sayangnya, seringkali Anda tidak memiliki kendali atas objek tersebut. Objek tersebut mungkin memiliki kumpulan properti yang berbeda dalam berbagai skenario. Jadi, Anda harus menangani semua skenario ini secara manual
Mari terapkan fungsi
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
51 yang menambahkan di awal dan/atau di akhir array elemen baru.javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_52 parameter menerima objek dengan propertijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_53. elemen disisipkan di awaljavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_54javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_55. elemen disisipkan di akhirjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_54
Fungsi mengembalikan instance array baru, tanpa mengubah array asli
Versi pertama
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_57, agak naif, mungkin terlihat seperti inijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_4Karena
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_52 objek dapat menghilangkanjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
53 ataujavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
55 properti, wajib untuk memverifikasi apakah properti ini ada dijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
52Pengakses properti mengevaluasi ke
javascript
typeof undefined === 'undefined'; // => true
8 jika properti tidak ada. Godaan pertama untuk memeriksa apakah ada propertijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_53 ataujavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
55 adalah memverifikasinya terhadapjavascript
typeof undefined === 'undefined'; // => true
8. Ini dilakukan dalam persyaratanjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_66 danjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
67Tidak terlalu cepat. Pendekatan ini memiliki kelemahan.
javascript
typeof undefined === 'undefined'; // => true
8, sertajavascript
let myVariable;
myVariable; // => undefined
0,javascript
typeof undefined === 'undefined'; // => true
6,javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
71,javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
72 danjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
73 adalah nilai palsuDalam implementasi
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_57 saat ini, fungsi tidak mengizinkan untuk memasukkan elemen palsujavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_5javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_71 danjavascript
let myVariable;
myVariable; // => undefined
0 salah. Karenajavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_66 danjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
67 sebenarnya dibandingkan dengan falsy, elemen ini tidak dimasukkan ke dalam array. Fungsi mengembalikan array awaljavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_79 tanpa modifikasi, bukanjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
80 yang diharapkanTips berikut menjelaskan cara mengecek keberadaan properti dengan benar
Kiat 3. Periksa keberadaan properti
Untungnya, JavaScript menawarkan banyak cara untuk menentukan apakah objek tersebut memiliki properti tertentu
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_81. bandingkan denganjavascript
typeof undefined === 'undefined'; // => true
_8 secara langsungjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_83. memverifikasi jenis nilai propertijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_84. verifikasi apakah objek memiliki properti sendirijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_85. verifikasi apakah objek memiliki properti sendiri atau diwariskan
Rekomendasi saya adalah menggunakan
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_86 operator. Ini memiliki sintaks yang pendek dan manis.javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_86 kehadiran operator menyarankan maksud yang jelas untuk memeriksa apakah suatu objek memiliki properti tertentu, tanpa mengakses nilai properti yang sebenarnyajavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_84 adalah solusi yang bagus juga. Ini sedikit lebih lama darijavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
86 operator dan memverifikasi hanya di properti objek itu sendiriMari tingkatkan fungsi
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_51 menggunakan operatorjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
86javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_6javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_92 (danjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
93) adalahjavascript
let nothing;
typeof nothing === 'undefined'; // => true
9 apakah properti yang sesuai ada,javascript
let myVariable;
myVariable; // => undefined
0 jika tidakjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_86 operator memperbaiki masalah dengan memasukkan elemen palsujavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
71 danjavascript
let myVariable;
myVariable; // => undefined
0. Sekarang, menambahkan elemen ini di awal dan akhirjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
79 menghasilkan hasil yang diharapkanjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
80Kiat 4. Destrukturisasi untuk mengakses properti objek
Saat mengakses properti objek, terkadang perlu menetapkan nilai default jika properti tidak ada
Anda dapat menggunakan
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_86 disertai dengan operator ternary untuk melakukannyajavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_7Sintaks operator ternary menjadi menakutkan ketika jumlah properti yang diperiksa bertambah. Untuk setiap properti, Anda harus membuat baris kode baru untuk menangani default, menambah tembok jelek dari operator ternary yang mirip
Untuk menggunakan pendekatan yang lebih elegan, mari kenali fitur ES2015 hebat yang disebut penghancuran objek
Penghancuran objek memungkinkan ekstraksi sebaris dari nilai properti objek secara langsung ke dalam variabel dan menyetel nilai default jika properti tidak ada. Sintaks yang nyaman untuk menghindari berurusan langsung dengan
javascript
typeof undefined === 'undefined'; // => true
8Memang, ekstraksi properti sekarang tepat
javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_8Untuk melihat hal-hal dalam tindakan, mari kita definisikan fungsi berguna yang membungkus string dalam tanda kutip
javascript
function undefined() {
// problem solved
}
_03 menerima argumen pertama sebagai string yang akan dibungkus. Argumen keduajavascript
function undefined() {
// problem solved
}
_04 adalah objek dengan propertijavascript
function undefined() {
// problem solved
}
_05. kutipan char, e. g.javascript
function undefined() {
// problem solved
}
_06 (kutip tunggal) ataujavascript
function undefined() {
// problem solved
}
07 (kutip ganda). Default kejavascript
function undefined() {
// problem solved
}
_07javascript
function undefined() {
// problem solved
}
_09. nilai boolean untuk melewati kutipan jika string sudah dikutip. Default kejavascript
let nothing;
typeof nothing === 'undefined'; // => true
_9
Menerapkan manfaat dari penghancuran objek, mari terapkan
javascript
function undefined() {
// problem solved
}
11javascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
_9javascript
function undefined() {
// problem solved
}
_12 penugasan destrukturisasi dalam satu baris mengekstrak propertijavascript
function undefined() {
// problem solved
}
05 danjavascript
function undefined() {
// problem solved
}
09 dari objekjavascript
function undefined() {
// problem solved
}
04Jika beberapa properti tidak ada di objek
javascript
function undefined() {
// problem solved
}
_04, tugas penghancuran menetapkan nilai default.javascript
function undefined() {
// problem solved
}
_17 untukjavascript
function undefined() {
// problem solved
}
05 danjavascript
let myVariable;
myVariable; // => undefined
0 untukjavascript
function undefined() {
// problem solved
}
09Untungnya, fungsinya masih memiliki ruang untuk perbaikan
Mari pindahkan tugas penghancuran ke bagian parameter. Dan atur nilai default (objek kosong
javascript
function undefined() {
// problem solved
}
21) untuk parameterjavascript
function undefined() {
// problem solved
}
04, untuk melewati argumen kedua saat pengaturan default sudah cukupjavascript
function undefined() {
// problem solved
}
_0Tugas penghancuran menggantikan parameter
javascript
function undefined() {
// problem solved
}
04 dalam tanda tangan fungsi. aku suka itu.javascript
function undefined() {
// problem solved
}
_11 menjadi satu baris lebih pendekjavascript
function undefined() {
// problem solved
}
_25 di sisi kanan tugas penghancuran memastikan bahwa objek kosong digunakan jika argumen kedua tidak ditentukan sama sekalijavascript
function undefined() {
// problem solved
}
26Penghancuran objek adalah fitur canggih yang menangani ekstraksi properti dari objek secara efisien. Saya suka kemungkinan untuk menentukan nilai default yang akan dikembalikan ketika properti yang diakses tidak ada. Akibatnya, Anda menghindari
javascript
typeof undefined === 'undefined'; // => true
_8 dan kerumitan di sekitarnyaKiat 5. Isi objek dengan properti default
Jika tidak perlu membuat variabel untuk setiap properti, seperti yang dilakukan tugas penghancuran, objek yang melewatkan beberapa properti dapat diisi dengan nilai default
ES2015
javascript
function undefined() {
// problem solved
}
_28 menyalin nilai dari semua properti yang dapat dihitung sendiri dari satu atau lebih objek sumber ke objek target. Fungsi mengembalikan objek targetMisalnya, Anda perlu mengakses properti dari objek
javascript
function undefined() {
// problem solved
}
29 yang tidak selalu berisi kumpulan properti lengkapnyaUntuk menghindari
javascript
typeof undefined === 'undefined'; // => true
_8 saat mengakses properti yang tidak ada darijavascript
function undefined() {
// problem solved
}
29, mari lakukan beberapa penyesuaian- Tentukan objek
javascript
function undefined() {
// problem solved
}
_32 yang menyimpan nilai properti default - Panggil
javascript
function undefined() {
// problem solved
}
_33 untuk membuat objek barujavascript
function undefined() {
// problem solved
}
34. Objek baru menerima semua properti darijavascript
function undefined() {
// problem solved
}
29, tetapi yang hilang diambil darijavascript
function undefined() {
// problem solved
}
32
javascript
function undefined() {
// problem solved
}
_1javascript
function undefined() {
// problem solved
}
_29 hanya berisijavascript
function undefined() {
// problem solved
}
38 properti.javascript
function undefined() {
// problem solved
}
_32 objek mendefinisikan nilai default untuk propertijavascript
function undefined() {
// problem solved
}
38 danjavascript
function undefined() {
// problem solved
}
41javascript
function undefined() {
// problem solved
}
_42 mengambil argumen pertama sebagai objek targetjavascript
function undefined() {
// problem solved
}
43. Objek target menerima nilai propertijavascript
function undefined() {
// problem solved
}
_38 darijavascript
function undefined() {
// problem solved
}
29 objek sumber. Dan nilaijavascript
function undefined() {
// problem solved
}
_41 properti darijavascript
function undefined() {
// problem solved
}
32 objek sumber, karenajavascript
function undefined() {
// problem solved
}
29 tidak mengandungjavascript
function undefined() {
// problem solved
}
41Urutan di mana objek sumber disebutkan memang penting. nanti properti objek sumber menimpa yang sebelumnya
Anda sekarang aman untuk mengakses properti apa pun dari objek
javascript
function undefined() {
// problem solved
}
34, termasukjavascript
function undefined() {
// problem solved
}
51 yang awalnya tidak tersedia dijavascript
function undefined() {
// problem solved
}
29Untungnya, ada alternatif yang lebih mudah untuk mengisi objek dengan properti default. Saya sarankan untuk menggunakan
Alih-alih
javascript
function undefined() {
// problem solved
}
_42 doa, gunakan sintaks penyebaran objek untuk menyalin ke objek target semua properti yang dimiliki dan dapat dihitung dari objek sumberjavascript
function undefined() {
// problem solved
}
_2Penginisialisasi objek menyebarkan properti dari
javascript
function undefined() {
// problem solved
}
32 danjavascript
function undefined() {
// problem solved
}
29 objek sumber. Urutan di mana objek sumber ditentukan adalah penting. nanti properti objek sumber menimpa yang sebelumnyaMengisi objek yang tidak lengkap dengan nilai properti default adalah strategi yang efisien untuk membuat kode Anda aman dan tahan lama. Apa pun situasinya, objek selalu berisi kumpulan properti lengkap. dan
javascript
typeof undefined === 'undefined'; // => true
_8 tidak dapat dibuatTip bonus. penggabungan nullish
Operator mengevaluasi ke nilai default ketika operannya adalah
javascript
typeof undefined === 'undefined'; // => true
8 ataujavascript
typeof undefined === 'undefined'; // => true
6javascript
function undefined() {
// problem solved
}
_3Operator penggabungan Nullish nyaman untuk mengakses properti objek sambil memiliki nilai default saat properti ini adalah
javascript
typeof undefined === 'undefined'; // => true
8 ataujavascript
typeof undefined === 'undefined'; // => true
6javascript
function undefined() {
// problem solved
}
_4javascript
function undefined() {
// problem solved
}
_61 objek tidak memiliki propertijavascript
function undefined() {
// problem solved
}
41, sehinggajavascript
function undefined() {
// problem solved
}
63 pengakses properti adalahjavascript
typeof undefined === 'undefined'; // => true
8.javascript
function undefined() {
// problem solved
}
_65 dievaluasi ke nilai defaultjavascript
function undefined() {
// problem solved
}
66javascript
function undefined() {
// problem solved
}
_67 adalahjavascript
function undefined() {
// problem solved
}
68, jadi operator penggabungan nullish mengevaluasi ke nilai propertijavascript
function undefined() {
// problem solved
}
682. 3 Parameter fungsi
Parameter fungsi secara implisit default ke
javascript
typeof undefined === 'undefined'; // => true
8
Biasanya sebuah fungsi yang didefinisikan dengan sejumlah parameter tertentu harus dipanggil dengan jumlah argumen yang sama. Saat itulah parameter mendapatkan nilai yang Anda harapkan
javascript
function undefined() {
// problem solved
}
_5Ketika
javascript
function undefined() {
// problem solved
}
_71, parameterjavascript
function undefined() {
// problem solved
}
72 danjavascript
function undefined() {
// problem solved
}
73 menerimajavascript
function undefined() {
// problem solved
}
74 dan masing-masingjavascript
function undefined() {
// problem solved
}
75 nilai. Perkalian dihitung seperti yang diharapkan.javascript
function undefined() {
// problem solved
}
_76Apa yang terjadi jika Anda menghilangkan argumen tentang doa?
Mari kita ubah sedikit contoh sebelumnya dengan memanggil fungsi hanya dengan satu argumen
javascript
function undefined() {
// problem solved
}
_6Doa
javascript
function undefined() {
// problem solved
}
_78 dilakukan dengan satu argumen. sebagai hasilnyajavascript
function undefined() {
// problem solved
}
72 parameter adalahjavascript
function undefined() {
// problem solved
}
74, tetapi parameterjavascript
function undefined() {
// problem solved
}
73 adalahjavascript
typeof undefined === 'undefined'; // => true
8Kiat 6. Gunakan nilai parameter default
Kadang-kadang suatu fungsi tidak memerlukan set lengkap argumen pada pemanggilan. Anda dapat menyetel default untuk parameter yang tidak memiliki nilai
Mengingat contoh sebelumnya, mari kita lakukan perbaikan. Jika parameter
javascript
function undefined() {
// problem solved
}
_73 adalahjavascript
typeof undefined === 'undefined'; // => true
8, biarkan default kejavascript
function undefined() {
// problem solved
}
85javascript
function undefined() {
// problem solved
}
_7Fungsi dipanggil dengan satu argumen
javascript
function undefined() {
// problem solved
}
78. Awalnya, parameterjavascript
function undefined() {
// problem solved
}
_72 adalahjavascript
function undefined() {
// problem solved
}
85 danjavascript
function undefined() {
// problem solved
}
73 adalahjavascript
typeof undefined === 'undefined'; // => true
8Pernyataan bersyarat memverifikasi apakah
javascript
function undefined() {
// problem solved
}
73 adalahjavascript
typeof undefined === 'undefined'; // => true
8. Jika itu terjadi, penetapanjavascript
function undefined() {
// problem solved
}
_93 menetapkan nilai defaultMeskipun cara yang disediakan untuk menetapkan nilai default berfungsi, saya tidak menyarankan membandingkan langsung dengan
javascript
typeof undefined === 'undefined'; // => true
8. Ini bertele-tele dan terlihat seperti peretasanPendekatan yang lebih baik adalah menggunakan fitur ES2015. Singkat, ekspresif, dan tidak ada perbandingan langsung dengan
javascript
typeof undefined === 'undefined'; // => true
8Menambahkan nilai default ke parameter
javascript
function undefined() {
// problem solved
}
_93 terlihat lebih baikjavascript
function undefined() {
// problem solved
}
_8javascript
function undefined() {
// problem solved
}
_93 dalam tanda tangan fungsi memastikan bahwa jikajavascript
function undefined() {
// problem solved
}
73 adalahjavascript
typeof undefined === 'undefined'; // => true
8, parameter default kejavascript
function undefined() {
// problem solved
}
85Fitur parameter default ES2015 bersifat intuitif dan ekspresif. Selalu gunakan untuk menetapkan nilai default untuk parameter opsional
2. 4 Nilai pengembalian fungsi
Secara implisit, tanpa pernyataan
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_01, fungsi JavaScript mengembalikanjavascript
typeof undefined === 'undefined'; // => true
8
Fungsi yang tidak memiliki pernyataan
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_01 secara implisit mengembalikanjavascript
typeof undefined === 'undefined'; // => true
8javascript
function undefined() {
// problem solved
}
_9javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
05 fungsi tidak mengembalikan hasil perhitungan apa pun. Hasil pemanggilan fungsi adalahjavascript
typeof undefined === 'undefined'; // => true
8Situasi yang sama terjadi ketika ada pernyataan
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_01, tetapi tanpa ekspresi di dekatnyajavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
0javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
08 pernyataan dieksekusi, tetapi tidak mengembalikan ekspresi apa pun. Hasil doa jugajavascript
typeof undefined === 'undefined'; // => true
8Tentu saja, menunjukkan dekat
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_01 ekspresi yang dikembalikan berfungsi seperti yang diharapkanjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
1Sekarang pemanggilan fungsi dievaluasi menjadi
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
11, yaitujavascript
function undefined() {
// problem solved
}
85 kuadratKiat 7. Jangan percaya penyisipan titik koma otomatis
Daftar pernyataan berikut dalam JavaScript harus diakhiri dengan titik koma (
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
13)- pernyataan kosong
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8,javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
7,javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
9,javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
17,javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
18 deklarasi- pernyataan ekspresi
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
19 pernyataanjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
20 pernyataan,javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
21 pernyataanjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
22 pernyataanjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_01 pernyataan
Jika Anda menggunakan salah satu pernyataan di atas, pastikan untuk menandai titik koma di bagian akhir
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
2Di akhir pernyataan
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8 dan pernyataanjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
01, sebuah titik koma wajib ditulisApa yang terjadi jika Anda tidak ingin menandai titik koma ini?
Dibantu oleh ASI, Anda dapat menghapus titik koma dari contoh sebelumnya
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
3Teks di atas adalah kode JavaScript yang valid. Titik koma yang hilang dimasukkan secara otomatis untuk Anda
Sekilas memang terlihat cukup menjanjikan. Mekanisme ASI memungkinkan Anda melewati titik koma yang tidak perlu. Anda dapat membuat kode JavaScript lebih kecil dan lebih mudah dibaca
Ada satu jebakan kecil tapi menyebalkan yang dibuat oleh ASI. Ketika baris baru berada di antara
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_01 dan ekspresi yang dikembalikanjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
27, ASI secara otomatis menyisipkan titik koma sebelum baris barujavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
28Apa artinya di dalam fungsi memiliki
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
08 pernyataan? . Jika Anda tidak mengetahui secara detail mekanisme ASI, ________0______8 tiba-tiba kembali menyesatkanSebagai contoh, mari pelajari nilai yang dikembalikan dari
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
32 doajavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
4Antara pernyataan
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_01 dan ekspresi literal array ada baris baru. JavaScript secara otomatis menyisipkan titik koma setelahjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
01, menafsirkan kode sebagai berikutjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
5Pernyataan
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_08 membuat fungsijavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
32 mengembalikanjavascript
typeof undefined === 'undefined'; // => true
8 alih-alih array yang diharapkanMasalahnya diselesaikan dengan menghapus baris baru antara
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
01 dan array literaljavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
6Rekomendasi saya adalah untuk mempelajari bagaimana tepatnya Penyisipan Titik Koma Otomatis bekerja untuk menghindari situasi seperti itu
Tentu saja, jangan pernah menempatkan baris baru antara
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
01 dan ekspresi yang dikembalikan2. 5 batal operator
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
40 mengevaluasi ekspresi dan mengembalikanjavascript
typeof undefined === 'undefined'; // => true
8 terlepas dari hasil evaluasijavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
7dari
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_42 operator adalah untuk menekan evaluasi ekspresi kejavascript
typeof undefined === 'undefined'; // => true
8, mengandalkan beberapa efek samping dari evaluasi3. tidak terdefinisi dalam array
Anda mendapatkan
javascript
typeof undefined === 'undefined'; // => true
_8 saat mengakses elemen array dengan indeks di luar batasjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
8javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
45 array memiliki 3 elemen, sehingga indeks yang valid adalahjavascript
let array = null;
array; // => null
let movie = { name: 'Starship Troopers', musicBy: null };
movie.musicBy; // => null
'abc'.match(/[0-9]/); // => null
71,javascript
let myVariable;
myVariable; // => undefined
1, danjavascript
function undefined() {
// problem solved
}
85Karena tidak ada elemen array pada indeks
javascript
function undefined() {
// problem solved
}
74 danjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
50, pengaksesjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
51 danjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
52 adalahjavascript
typeof undefined === 'undefined'; // => true
8Dalam JavaScript, Anda mungkin menemukan apa yang disebut array jarang. Ini adalah array yang memiliki celah, mis. e. pada beberapa indeks, tidak ada elemen yang didefinisikan
Ketika celah (alias slot kosong) diakses di dalam array jarang, Anda juga mendapatkan
javascript
typeof undefined === 'undefined'; // => true
8Contoh berikut menghasilkan larik renggang dan mencoba mengakses slot kosongnya
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_9javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
55 dibuat dengan memanggil konstruktorjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
56 dengan argumen numerik pertama. Ini memiliki 3 slot kosongjavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
57 dibuat dengan array literal dengan elemen kedua yang hilangDi salah satu array jarang ini yang mengakses slot kosong bernilai
javascript
typeof undefined === 'undefined'; // => true
8Saat bekerja dengan array, untuk menghindari
javascript
typeof undefined === 'undefined'; // => true
8, pastikan untuk menggunakan indeks array yang valid dan mencegah pembuatan array jarang4. Perbedaan antara tidak terdefinisi dan nol
Apa perbedaan utama antara
javascript
typeof undefined === 'undefined'; // => true
8 danjavascript
typeof undefined === 'undefined'; // => true
6?javascript
typeof undefined === 'undefined'; // => true
_8 mewakili nilai variabel yang belum diinisialisasi, sementarajavascript
typeof undefined === 'undefined'; // => true
6 mewakili ketidakhadiran objek yang disengaja
Mari jelajahi perbedaannya dalam beberapa contoh
Variabel
javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
2 didefinisikan, namun tidak ditetapkan dengan nilai awaljavascript
typeof undefined === 'undefined'; // => true
0javascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
2 variabel adalahjavascript
typeof undefined === 'undefined'; // => true
8, yang menunjukkan variabel yang tidak diinisialisasiKonsep yang tidak diinisialisasi yang sama terjadi ketika properti objek yang tidak ada diakses
javascript
typeof undefined === 'undefined'; // => true
_1Karena
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_67 properti tidak ada dijavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
68, JavaScript mengevaluasijavascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
69 hinggajavascript
typeof undefined === 'undefined'; // => true
8Di sisi lain, Anda tahu bahwa sebuah variabel mengharapkan sebuah objek. Tetapi untuk beberapa alasan, Anda tidak dapat membuat instance objek. Dalam kasus seperti itu
javascript
typeof undefined === 'undefined'; // => true
_6 adalah indikator yang berarti dari objek yang hilangMisalnya,
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_72 adalah fungsi yang mengkloning objek JavaScript biasa. Fungsi ini diharapkan untuk mengembalikan objekjavascript
typeof undefined === 'undefined'; // => true
_2Namun
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_72 mungkin dipanggil dengan argumen non-objek.javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
74 ataujavascript
typeof undefined === 'undefined'; // => true
6. Dalam kasus seperti itu, fungsi tidak dapat membuat tiruan, sehingga mengembalikanjavascript
typeof undefined === 'undefined'; // => true
6 — indikator objek yang hilangjavascript
function isPalindrome(word) {
const length = word.length;
const half = Math.floor(length / 2);
for (let index = 0; index < half; index++) {
if (word[index] !== word[length - index - 1]) {
return false;
}
}
return true;
}
isPalindrome('madam'); // => true
isPalindrome('hello'); // => false
8 operator membuat perbedaan antarajavascript
typeof undefined === 'undefined'; // => true
8 danjavascript
typeof undefined === 'undefined'; // => true
6javascript
typeof undefined === 'undefined'; // => true
_3Juga
javascript
let number;
number; // => undefined
let movie = { name: 'Interstellar' };
movie.year; // => undefined
let movies = ['Interstellar', 'Alexander'];
movies[3]; // => undefined
_80 dengan benar membedakanjavascript
typeof undefined === 'undefined'; // => true
8 darijavascript
typeof undefined === 'undefined'; // => true
6javascript
typeof undefined === 'undefined'; // => true
_45. Kesimpulan
javascript
typeof undefined === 'undefined'; // => true
8 keberadaan adalah konsekuensi dari sifat permisif JavaScript yang memungkinkan penggunaan- variabel yang tidak diinisialisasi
- properti atau metode objek yang tidak ada
- indeks di luar batas untuk mengakses elemen array
- hasil pemanggilan fungsi yang tidak mengembalikan apa pun
Membandingkan langsung dengan
javascript
typeof undefined === 'undefined'; // => true
_8 tidak aman karena Anda mengandalkan praktik yang diizinkan tetapi tidak dianjurkan yang disebutkan di atasStrategi yang efisien adalah dengan mengurangi kemunculan
javascript
typeof undefined === 'undefined'; // => true
8 kata kunci dalam kode Anda dengan menerapkan kebiasaan baik seperti- mengurangi penggunaan variabel yang tidak diinisialisasi
- membuat siklus hidup variabel pendek dan dekat dengan sumber penggunaannya
- bila memungkinkan, tetapkan nilai awal ke variabel
- dukung
javascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
_7, jika tidak, gunakanjavascript
function bigFunction() {
// code...
myVariable; // => undefined
// code...
var myVariable = 'Initial value';
// code...
myVariable; // => 'Initial value'
}
bigFunction();
8 - gunakan nilai default untuk parameter fungsi yang tidak signifikan
- verifikasi keberadaan properti atau isi objek yang tidak aman dengan properti default
- hindari penggunaan array jarang
Apakah baik bahwa JavaScript memiliki
javascript
typeof undefined === 'undefined'; // => true
_8 danjavascript
typeof undefined === 'undefined'; // => true
6 untuk mewakili nilai kosong?Suka postingannya?
Sarankan Perbaikan
Posting berkualitas ke kotak masuk Anda
Saya secara teratur menerbitkan posting yang berisi
- Konsep penting JavaScript dijelaskan dengan kata-kata sederhana
- Ikhtisar fitur JavaScript baru
- Cara menggunakan TypeScript dan mengetik
- Desain perangkat lunak dan praktik pengkodean yang baik
Berlangganan buletin saya untuk mengirimkannya langsung ke kotak masuk Anda
LanggananBergabunglah dengan 6915 pelanggan lainnya
Tentang Dmitri Pavlutin
Penulis dan pelatih teknologi. Rutinitas harian saya terdiri dari (namun tidak terbatas) minum kopi, coding, menulis, coaching, mengatasi kebosanan 😉
Sekarang bekerja sebagai pengembang open source penuh waktu pada proyek Readapt - bertujuan untuk membuat web dapat diakses oleh semua orang