Jadual Kandungan
1、变量赋值
2、默认值赋值
3、对象属性
4、箭头函数
5、隐式返回值
6、默认参数值
7、模板字符串
8、解构赋值
9、展开运算符
10、强制参数
11、Array.find
12、Object [key]
13、双位操作符
Rumah hujung hadapan web tutorial js JavaScript开发人员需要知道的简写技巧(高级篇)

JavaScript开发人员需要知道的简写技巧(高级篇)

Oct 19, 2018 pm 02:41 PM
pembangunan JavaScript

本篇文章给大家带来的内容是关于JavaScript开发人员需要知道的简写技巧(高级篇),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、变量赋值

当将一个变量的值赋给另一个变量时,首先需要确保原值不是 null、未定义的或空值。

可以通过编写一个包含多个条件的判断语句来实现:

if (variable1 !== null || variable1 !== undefined || variable1 !== '') {
     let variable2 = variable1;
}
Salin selepas log masuk

或者简写为以下的形式:

const variable2 = variable1  || 'new';
Salin selepas log masuk

可以将下面的代码粘贴到 es6console 中,自己测试:

let variable1;
let variable2 = variable1  || '';
console.log(variable2 === ''); // prints true
variable1 = 'foo';
variable2 = variable1  || '';
console.log(variable2); // prints foo
Salin selepas log masuk

2、默认值赋值

如果预期参数是 null 或未定义,则不需要写六行代码来分配默认值。我们可以只使用一个简短的逻辑运算符,只用一行代码就能完成相同的操作。

let dbHost;
if (process.env.DB_HOST) {
  dbHost = process.env.DB_HOST;
} else {
  dbHost = 'localhost';
}
Salin selepas log masuk

简写为:

const dbHost = process.env.DB_HOST || 'localhost';
Salin selepas log masuk

3、对象属性

ES6 提供了一个很简单的办法,来分配属性的对象。如果属性名与 key 名相同,则可以使用简写。

const obj = { x:x, y:y };
Salin selepas log masuk

简写为:

const obj = { x, y };
Salin selepas log masuk

4、箭头函数

经典函数很容易读写,但是如果把它们嵌套在其它函数中进行调用时,整个函数就会变得有些冗长和混乱。这时候可以使用箭头函数来简写:

function sayHello(name) {
  console.log('Hello', name);
}
 
setTimeout(function() {
  console.log('Loaded')
}, 2000);
 
list.forEach(function(item) {
  console.log(item);
});
Salin selepas log masuk

简写为:

sayHello = name => console.log('Hello', name);
setTimeout(() => console.log('Loaded'), 2000);
list.forEach(item => console.log(item));
Salin selepas log masuk

5、隐式返回值

返回值是我们通常用来返回函数最终结果的关键字。只有一个语句的箭头函数,可以隐式返回结果(函数必须省略括号({ }),以便省略返回关键字)。

要返回多行语句(例如对象文本),需要使用()而不是{ }来包裹函数体。这样可以确保代码以单个语句的形式进行求值。

function calcCircumference(diameter) {
  return Math.PI * diameter
}
Salin selepas log masuk

简写为:

calcCircumference = diameter => (
  Math.PI * diameter;
)
Salin selepas log masuk

6、默认参数值

可以使用 if 语句来定义函数参数的默认值。ES6 中规定了可以在函数声明中定义默认值。

function volume(l, w, h) {
  if (w === undefined)
    w = 3;
  if (h === undefined)
    h = 4;
  return l * w * h;
}
Salin selepas log masuk

简写为:

volume = (l, w = 3, h = 4 ) => (l * w * h);
volume(2) //output: 24
Salin selepas log masuk

7、模板字符串

过去我们习惯了使用“+”将多个变量转换为字符串,但是有没有更简单的方法呢?

ES6 提供了相应的方法,我们可以使用反引号和 $ { } 将变量合成一个字符串。

const welcome = 'You have logged in as ' + first + ' ' + last + '.'
const db = 'http://' + host + ':' + port + '/' + database;
Salin selepas log masuk

简写为:

const welcome = `You have logged in as ${first} ${last}`;
const db = `http://${host}:${port}/${database}`;
Salin selepas log masuk

8、解构赋值

解构赋值是一种表达式,用于从数组或对象中快速提取属性值,并赋给定义的变量。

在代码简写方面,解构赋值能达到很好的效果。

const observable = require('mobx/observable');
const action = require('mobx/action');
const runInAction = require('mobx/runInAction');
const store = this.props.store;
const form = this.props.form;
const loading = this.props.loading;
const errors = this.props.errors;
const entity = this.props.entity;
Salin selepas log masuk

简写为:

import { observable, action, runInAction } from 'mobx';
const { store, form, loading, errors, entity } = this.props;
Salin selepas log masuk

甚至可以指定自己的变量名:

const { store, form, loading, errors, entity:contact } = this.props;
Salin selepas log masuk

9、展开运算符

展开运算符是在 ES6 中引入的,使用展开运算符能够让 JavaScript 代码更加有效和有趣。

使用展开运算符可以替换某些数组函数。

// joining arrays
const odd = [1, 3, 5];
const nums = [2 ,4 , 6].concat(odd);
 
// cloning arrays
const arr = [1, 2, 3, 4];
const arr2 = arr.slice( )
Salin selepas log masuk

简写为:

// joining arrays
const odd = [1, 3, 5 ];
const nums = [2 ,4 , 6, ...odd];
console.log(nums); // [ 2, 4, 6, 1, 3, 5 ]
 
// cloning arrays
const arr = [1, 2, 3, 4];
const arr2 = [...arr];
Salin selepas log masuk

和 concat( ) 功能不同的是,用户可以使用扩展运算符在任何一个数组中插入另一个数组。

const odd = [1, 3, 5 ];
const nums = [2, ...odd, 4 , 6];
Salin selepas log masuk

也可以将展开运算符和 ES6 解构符号结合使用:

const { a, b, ...z } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a) // 1
console.log(b) // 2
console.log(z) // { c: 3, d: 4 }
Salin selepas log masuk

10、强制参数

默认情况下,如果不向函数参数传值,那么 JavaScript 会将函数参数设置为未定义。其它一些语言则会发出警告或错误。要执行参数分配,可以使用if语句抛出未定义的错误,或者可以利用“强制参数”。

function foo(bar) {
  if(bar === undefined) {
    throw new Error('Missing parameter!');
  }
  return bar;
}
Salin selepas log masuk

简写为:

mandatory = ( ) => {
  throw new Error('Missing parameter!');
}
foo = (bar = mandatory( )) => {
  return bar;
}
Salin selepas log masuk

11、Array.find

如果你曾经编写过普通 JavaScript 中的 find 函数,那么你可能使用了 for 循环。在 ES6 中,介绍了一种名为 find()的新数组函数,可以实现 for 循环的简写。

const pets = [
  { type: 'Dog', name: 'Max'},
  { type: 'Cat', name: 'Karl'},
  { type: 'Dog', name: 'Tommy'},
]
function findDog(name) {
  for(let i = 0; i<pets.length; ++i) {
    if(pets[i].type === &#39;Dog&#39; && pets[i].name === name) {
      return pets[i];
    }
  }
}
Salin selepas log masuk

简写为:

pet = pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy');
console.log(pet); // { type: 'Dog', name: 'Tommy' }
Salin selepas log masuk

12、Object [key]

虽然将 foo.bar 写成 foo ['bar'] 是一种常见的做法,但是这种做法构成了编写可重用代码的基础。

请考虑下面这个验证函数的简化示例:

function validate(values) {
  if(!values.first)
    return false;
  if(!values.last)
    return false;
  return true;
}
console.log(validate({first:'Bruce',last:'Wayne'})); // true
Salin selepas log masuk

上面的函数完美的完成验证工作。但是当有很多表单,则需要应用验证,此时会有不同的字段和规则。如果可以构建一个在运行时配置的通用验证函数,会是一个好选择。

// object validation rules
const schema = {
  first: {
    required:true
  },
  last: {
    required:true
  }
}
 
// universal validation function
const validate = (schema, values) => {
  for(field in schema) {
    if(schema[field].required) {
      if(!values[field]) {
        return false;
      }
    }
  }
  return true;
}
console.log(validate(schema, {first:'Bruce'})); // false
console.log(validate(schema, {first:'Bruce',last:'Wayne'})); // true
Salin selepas log masuk

现在有了这个验证函数,我们就可以在所有窗体中重用,而无需为每个窗体编写自定义验证函数。

13、双位操作符

位操作符是 JavaScript 初级教程的基本知识点,但是我们却不常使用位操作符。因为在不处理二进制的情况下,没有人愿意使用 1 和 0。

但是双位操作符却有一个很实用的案例。你可以使用双位操作符来替代 Math.floor( )。双否定位操作符的优势在于它执行相同的操作运行速度更快。

Math.floor(4.9) === 4  //true
Salin selepas log masuk

简写为:

~~4.9 === 4  //true
Salin selepas log masuk

以上就是对JavaScript开发人员需要知道的简写技巧(高级篇)的全部介绍,如果您想了解更多有关JavaScript视频教程,请关注PHP中文网。

Atas ialah kandungan terperinci JavaScript开发人员需要知道的简写技巧(高级篇). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbandingan mendalam: perbezaan fungsi antara VSCode dan Visual Studio Perbandingan mendalam: perbezaan fungsi antara VSCode dan Visual Studio Mar 25, 2024 pm 05:33 PM

Tajuk: Perbandingan Mendalam: Perbezaan Fungsian antara VSCode dan Visual Studio, Contoh Kod Khusus Diperlukan Sama ada menulis kod hadapan atau kod belakang, pembangun selalunya perlu memilih persekitaran pembangunan bersepadu (IDE) yang sesuai dengan mereka untuk meningkatkan kecekapan kerja . Di antara banyak IDE, VSCode dan Visual Studio ialah dua produk popular. Artikel ini akan membandingkan secara mendalam perbezaan fungsi antara kedua-dua IDE dan menunjukkannya melalui contoh kod tertentu. VSCode telah dilancarkan oleh Microsoft

Adakah layui merupakan rangka kerja hadapan? Adakah layui merupakan rangka kerja hadapan? Apr 01, 2024 pm 11:36 PM

jawapannya ialah. Layui ialah rangka kerja bahagian hadapan yang menyediakan satu set komponen dan alatan yang dipratentukan untuk membina aplikasi web moden, termasuk ciri seperti komponen antara muka, manipulasi data, carta, animasi dan reka bentuk responsif.

Adakah ECharts bergantung pada jQuery? Analisis mendalam Adakah ECharts bergantung pada jQuery? Analisis mendalam Feb 27, 2024 am 08:39 AM

Adakah ECharts perlu bergantung pada jQuery? Tafsiran terperinci memerlukan contoh kod khusus ECharts ialah perpustakaan visualisasi data yang sangat baik yang menyediakan pelbagai jenis carta dan fungsi interaktif dan digunakan secara meluas dalam pembangunan web. Apabila menggunakan ECharts, ramai orang akan mempunyai soalan: Adakah ECharts perlu bergantung pada jQuery? Artikel ini akan menerangkan perkara ini secara terperinci dan memberikan contoh kod khusus. Pertama sekali, untuk menjadi jelas, ECharts sendiri tidak bergantung pada jQuery;

Pemilihan enjin templat dan perkongsian pengalaman penggunaan dalam pembangunan JavaScript Pemilihan enjin templat dan perkongsian pengalaman penggunaan dalam pembangunan JavaScript Nov 04, 2023 am 11:42 AM

Berkongsi pengalaman tentang pemilihan dan penggunaan enjin templat dalam pembangunan JavaScript Pengenalan: Dalam pembangunan bahagian hadapan moden, enjin templat (TemplateEngine) memainkan peranan yang penting. Ia membolehkan pembangun mengatur dan mengurus sejumlah besar data dinamik dengan lebih cekap dan berkesan memisahkan data daripada persembahan antara muka. Pada masa yang sama, memilih enjin templat yang sesuai juga boleh membawa pembangun pengalaman pembangunan dan pengoptimuman prestasi yang lebih baik. Walau bagaimanapun, antara banyak enjin templat JavaScript, yang manakah harus anda pilih? tangkap

Apakah vscode yang biasanya digunakan untuk menulis? Apakah vscode yang biasanya digunakan untuk menulis? Mar 14, 2024 pm 05:54 PM

VSCode ialah editor kod berkuasa yang menyokong berbilang bahasa pengaturcaraan dan format fail. Ia mempunyai sokongan terbina dalam untuk JavaScript, Python, Java, C++, TypeScript, HTML/CSS, Go dan bahasa lain, dan boleh menyokong lebih banyak bahasa melalui pemalam sambungan, termasuk Rust, C#, Objective-C, PHP, Ruby, Swift, SQL, XML dll.

Bagaimana cara menggunakan XPath untuk mencari dari nod DOM yang ditentukan di JavaScript? Bagaimana cara menggunakan XPath untuk mencari dari nod DOM yang ditentukan di JavaScript? Apr 04, 2025 pm 11:15 PM

Penjelasan terperinci mengenai kaedah carian XPath di bawah nod Dom dalam JavaScript, kita sering perlu mencari nod tertentu dari pokok Dom berdasarkan ekspresi XPath. Sekiranya anda perlu ...

SAP mengumumkan pelbagai keupayaan AI generatif baharu, mempertingkatkan platform Datasphere SAP mengumumkan pelbagai keupayaan AI generatif baharu, mempertingkatkan platform Datasphere Mar 07, 2024 pm 06:55 PM

SAP sedang melancarkan pelbagai keupayaan AI generatif baharu dan keupayaan ini tidak lama lagi akan tersedia dalam platform SAP Datasphere. SAP berkata bahawa ciri terkini yang dikemas kini akan memberikan pengguna pengalaman interaksi data perniagaan yang lebih intuitif dan membantu menggalakkan transformasi perusahaan yang lebih bijak. Keupayaan baharu ini termasuk alat copilot untuk mengautomasikan pelbagai tugas analisis data, dan keupayaan pangkalan data vektor untuk menyokong beban kerja AI generatif yang lebih maju. Selain itu, graf pengetahuan baharu dilancarkan untuk mendedahkan pelbagai cerapan dan corak dalam set data yang kompleks. Pengenalan fungsi ini akan membawa pengguna aliran kerja yang lebih cekap, meningkatkan keupayaan analisis data dan menyediakan sokongan yang lebih komprehensif untuk membuat keputusan korporat. SAP Datasphere pada Mac 2023

Bagaimana dengan cekap mengira sudut antara dua mata dalam JavaScript? Bagaimana dengan cekap mengira sudut antara dua mata dalam JavaScript? Apr 04, 2025 pm 07:36 PM

Dalam JavaScript, anda sering menghadapi keperluan untuk mengira sudut antara dua mata (radian) satu titik berbanding dengan titik lain.

See all articles