Ringkaskan 15 kemahiran pembangunan JavaScript (tersusun dan dikongsi)

WBOY
Lepaskan: 2022-01-06 17:37:29
ke hadapan
1716 orang telah melayarinya

Artikel ini akan berkongsi dengan anda beberapa petua yang sering digunakan dalam projek JavaScript mempunyai banyak ciri hebat yang kebanyakan pemula dan pembangun pertengahan tidak tahu. Semoga ia membantu semua orang.

Ringkaskan 15 kemahiran pembangunan JavaScript (tersusun dan dikongsi)

1. Tambahkan sifat secara bersyarat pada objek

Kita boleh menggunakan operator pengembangan (. . .) untuk menambah sifat dengan cepat pada objek JS secara bersyarat.

const condition = true;
const person = {
  id: 1,
  name: 'John Doe',
  ...(condition && { age: 16 }),
};
Salin selepas log masuk

Pengendali && mengembalikan ungkapan dinilai terakhir jika setiap operan menilai kepada benar. Jadi objek {umur: 16} dikembalikan, yang kemudiannya dikembangkan untuk menjadi sebahagian daripada objek orang itu.

Jika syarat palsu, JavaScript akan melakukan sesuatu seperti ini:

const person = {
  id: 1,
  name: '前端小智',
  ...(false), 
};
// 展开 `false` 对对象没有影响
console.log(person); // { id: 1, name: 'John Doe' }
Salin selepas log masuk

2 Semak sama ada atribut wujud dalam objek

Anda boleh menggunakan kata kunci dalam untuk menyemak sama ada sifat tertentu wujud dalam objek JavaScript.

const person = { name: '前端小智', salary: 1000 };
console.log('salary' in person); // true
console.log('age' in person); // false
Salin selepas log masuk

3. Nama sifat dinamik dalam objek

Mudah untuk menetapkan sifat objek menggunakan kekunci dinamik. Hanya gunakan ['key name'] untuk menambah sifat:

const dynamic = 'flavour';
var item = {
  name: '前端小智',
  [dynamic]: '巧克力'
}
console.log(item); // { name: '前端小智', flavour: '巧克力' }
Salin selepas log masuk

Helah yang sama boleh digunakan untuk merujuk sifat objek menggunakan kekunci dinamik:

const keyName = 'name';
console.log(item[keyName]); // returns '前端小智'
Salin selepas log masuk

4. Gunakan kekunci dinamik untuk memusnahkan objek

Kami tahu bahawa apabila memusnahkan objek, anda boleh menggunakan: untuk menamakan semula atribut yang dimusnahkan. Tetapi, adakah anda tahu bahawa anda juga boleh menyahbina sifat objek apabila nama kunci adalah dinamik?

const person = { id: 1, name: '前端小智' };
const { name: personName } = person;
console.log(personName); // '前端小智'
Salin selepas log masuk

Sekarang, kami menggunakan kunci dinamik untuk menyahbina sifat:

const templates = {
  'hello': 'Hello there',
  'bye': 'Good bye'
};
const templateName = 'bye';
const { [templateName]: template } = templates;
console.log(template); // Good bye
Salin selepas log masuk

5 Penggabungan nilai nol

Pengendali ?? berguna apabila kita ingin menyemak sama ada pembolehubah adalah batal atau tidak ditentukan. Apabila operan kirinya adalah null atau undefined, ia mengembalikan operan kanan, jika tidak ia mengembalikan operan kirinya.

const foo = null ?? 'Hello';
console.log(foo); // 'Hello'
const bar = 'Not null' ?? 'Hello';
console.log(bar); // 'Not null'
const baz = 0 ?? 'Hello';
console.log(baz); // 0
Salin selepas log masuk

Dalam contoh ketiga, 0 dikembalikan kerana walaupun 0 dianggap palsu dalam JS, ia bukan batal atau tidak ditentukan. Anda mungkin berfikir bahawa kami boleh menggunakan operator || tetapi terdapat perbezaan antara keduanya

Anda mungkin berfikir bahawa kami boleh menggunakan operator || di sini, tetapi terdapat perbezaan antara keduanya.

const cannotBeZero = 0 || 5;
console.log(cannotBeZero); // 5
const canBeZero = 0 ?? 5;
console.log(canBeZero); // 0
Salin selepas log masuk

6. Rantaian pilihan?.

Adakah kita sering menghadapi ralat seperti ini: TypeError: Tidak boleh membaca sifat 'foo' daripada null. Ini adalah masalah yang menjengkelkan bagi setiap pembangun. Rangkaian pilihan telah diperkenalkan untuk menyelesaikan masalah ini. Mari lihat:

const book = { id:1, title: 'Title', author: null };
// 通常情况下,你会这样做
console.log(book.author.age) // throws error
console.log(book.author && book.author.age); // null
// 使用可选链
console.log(book.author?.age); // undefined
// 或深度可选链
console.log(book.author?.address?.city); // undefined
Salin selepas log masuk

Anda juga boleh menggunakan rangkaian fungsi pilihan berikut:

const person = {
  firstName: '前端',
  lastName: '小智',
  printName: function () {
    return `${this.firstName} ${this.lastName}`;
  },
};
console.log(person.printName()); // '前端 小智'
console.log(persone.doesNotExist?.()); // undefined
Salin selepas log masuk

7. Gunakan operator

!! Pengendali boleh digunakan untuk menukar hasil ungkapan kepada nilai Boolean (benar atau palsu):

const greeting = 'Hello there!';
console.log(!!greeting) // true
const noGreeting = '';
console.log(!!noGreeting); // false
Salin selepas log masuk

8 . Rentetan dan Integer Menukar

Gunakan operator untuk menukar rentetan kepada nombor dengan cepat:

const stringNumer = '123';
console.log(+stringNumer); //123
console.log(typeof +stringNumer); //'number'
Salin selepas log masuk

Untuk menukar nombor kepada rentetan dengan cepat, anda juga boleh menggunakan operator, diikuti dengan Rentetan kosong:

const myString = 25 + '';
console.log(myString); //'25'
console.log(typeof myString); //'string'
Salin selepas log masuk

Penukaran jenis ini sangat mudah, tetapi ia menghasilkan kurang kejelasan dan kebolehbacaan kod. Oleh itu, pembangunan sebenar memerlukan pemilihan dan penggunaan yang teliti.

9 Periksa nilai palsu dalam tatasusunan

Semua orang sepatutnya menggunakan kaedah tatasusunan: tapis, beberapa, setiap, kaedah ini. boleh digunakan bersama kaedah Boolean untuk menguji nilai benar dan salah.

const myArray = [null, false, 'Hello', undefined, 0];
// 过滤虚值
const filtered = myArray.filter(Boolean);
console.log(filtered); // ['Hello']
// 检查至少一个值是否为真
const anyTruthy = myArray.some(Boolean);
console.log(anyTruthy); // true
// 检查所有的值是否为真
const allTruthy = myArray.every(Boolean);
console.log(allTruthy); // false
Salin selepas log masuk

Berikut ialah cara ia berfungsi. Kami tahu bahawa kaedah tatasusunan ini menerima fungsi panggil balik, jadi kami lulus Boolean sebagai fungsi panggil balik. Fungsi Boolean sendiri menerima parameter dan mengembalikan benar atau salah bergantung pada kebenaran parameter. Jadi:

myArray.filter(val => Boolean(val));
Salin selepas log masuk

bersamaan dengan:

myArray.filter(Boolean);
Salin selepas log masuk

10. Susunan rata

dalam Prototaip Array There ialah kaedah rata yang boleh membuat tatasusunan tunggal daripada tatasusunan.

const myArray = [{ id: 1 }, [{ id: 2 }], [{ id: 3 }]];
const flattedArray = myArray.flat(); 
//[ { id: 1 }, { id: 2 }, { id: 3 } ]
Salin selepas log masuk

Anda juga boleh menentukan tahap kedalaman, menyatakan sejauh mana struktur tatasusunan bersarang harus diratakan. Contohnya:

const arr = [0, 1, 2, [[[3, 4]]]];
console.log(arr.flat(2)); // returns [0, 1, 2, [3,4]]
Salin selepas log masuk

11.Object.entry

Kebanyakan pembangun menggunakan kaedah Object.keys untuk mengulangi objek. Kaedah ini hanya mengembalikan tatasusunan kunci objek, bukan nilai. Kita boleh menggunakan Object.entry untuk mendapatkan kunci dan nilai.

const person = {
  name: '前端小智',
  age: 20
};
Object.keys(person); // ['name', 'age']
Object.entries(data); // [['name', '前端小智'], ['age', 20]]
Salin selepas log masuk

Untuk mengulangi objek, kita boleh melakukan perkara berikut:

Object.keys(person).forEach((key) => {
  console.log(`${key} is ${person[key]}`);
});
// 使用 entries 获取键和值
Object.entries(person).forEach(([key, value]) => {
  console.log(`${key} is ${value}`);
});
// name is 前端小智
// age is 20
Salin selepas log masuk

Kedua-dua kaedah di atas mengembalikan hasil yang sama, tetapi Object.entry lebih mudah untuk mendapatkan nilai kunci berpasangan.

kaedah 12.replaceAll

Dalam JS, untuk menggantikan semua kejadian rentetan dengan rentetan lain, kita perlu menggunakan ungkapan Biasa berikut ditunjukkan:

const str = 'Red-Green-Blue';
// 只规制第一次出现的
str.replace('-', ' '); // Red Green-Blue
// 使用 RegEx 替换所有匹配项
str.replace(/\-/g, ' '); // Red Green Blue
Salin selepas log masuk

Tetapi dalam ES12, kaedah baharu yang dipanggil replaceAll telah ditambahkan pada String.prototype, yang menggantikan semua kejadian rentetan dengan nilai rentetan lain.

str.replaceAll('-', ' '); // Red Green Blue
Salin selepas log masuk

13 Pemisah nombor

Anda boleh menggunakan garis bawah sebagai pemisah nombor, yang boleh mengira nombor 0 dengan mudah. nombor.

// 难以阅读
const billion = 1000000000;
// 易于阅读
const readableBillion = 1000_000_000;
console.log(readableBillion) //1000000000
Salin selepas log masuk

下划线分隔符也可以用于BigInt数字,如下例所示

const trillion = 1000_000_000_000n;
console.log(trillion); // 1000000000000
Salin selepas log masuk

14.document.designMode

与前端的JavaScript有关,设计模式让你可以编辑页面上的任何内容。只要打开浏览器控制台,输入以下内容即可。

document.designMode = 'on';
Salin selepas log masuk

15.逻辑赋值运算符

逻辑赋值运算符是由逻辑运算符&&、||、??和赋值运算符=组合而成。

const a = 1;
const b = 2;
a &&= b;
console.log(a); // 2
// 上面等价于
a && (a = b);
// 或者
if (a) {
  a = b
}
Salin selepas log masuk

检查a的值是否为真,如果为真,那么更新a的值。使用逻辑或 ||操作符也可以做同样的事情。

const a = null;
const b = 3;
a ||= b;
console.log(a); // 3
// 上面等价于
a || (a = b);
Salin selepas log masuk

使用空值合并操作符 ??:

const a = null;
const b = 3;
a ??= b;
console.log(a); // 3
// 上面等价于
if (a === null || a === undefined) {
  a = b;
}
Salin selepas log masuk

注意:??操作符只检查 null 或 undefined 的值。

【相关推荐:javascript学习教程

Atas ialah kandungan terperinci Ringkaskan 15 kemahiran pembangunan JavaScript (tersusun dan dikongsi). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.im
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!