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

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

Oct 19, 2018 pm 02:41 PM
javascript开发

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

1、变量赋值

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

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

if (variable1 !== null || variable1 !== undefined || variable1 !== '') {
     let variable2 = variable1;
}
登录后复制

或者简写为以下的形式:

const variable2 = variable1  || 'new';
登录后复制

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

let variable1;
let variable2 = variable1  || '';
console.log(variable2 === ''); // prints true
variable1 = 'foo';
variable2 = variable1  || '';
console.log(variable2); // prints foo
登录后复制

2、默认值赋值

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

let dbHost;
if (process.env.DB_HOST) {
  dbHost = process.env.DB_HOST;
} else {
  dbHost = 'localhost';
}
登录后复制

简写为:

const dbHost = process.env.DB_HOST || 'localhost';
登录后复制

3、对象属性

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

const obj = { x:x, y:y };
登录后复制

简写为:

const obj = { x, y };
登录后复制

4、箭头函数

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

function sayHello(name) {
  console.log('Hello', name);
}
 
setTimeout(function() {
  console.log('Loaded')
}, 2000);
 
list.forEach(function(item) {
  console.log(item);
});
登录后复制

简写为:

sayHello = name => console.log('Hello', name);
setTimeout(() => console.log('Loaded'), 2000);
list.forEach(item => console.log(item));
登录后复制

5、隐式返回值

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

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

function calcCircumference(diameter) {
  return Math.PI * diameter
}
登录后复制

简写为:

calcCircumference = diameter => (
  Math.PI * diameter;
)
登录后复制

6、默认参数值

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

function volume(l, w, h) {
  if (w === undefined)
    w = 3;
  if (h === undefined)
    h = 4;
  return l * w * h;
}
登录后复制

简写为:

volume = (l, w = 3, h = 4 ) => (l * w * h);
volume(2) //output: 24
登录后复制

7、模板字符串

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

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

const welcome = 'You have logged in as ' + first + ' ' + last + '.'
const db = 'http://' + host + ':' + port + '/' + database;
登录后复制

简写为:

const welcome = `You have logged in as ${first} ${last}`;
const db = `http://${host}:${port}/${database}`;
登录后复制

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;
登录后复制

简写为:

import { observable, action, runInAction } from 'mobx';
const { store, form, loading, errors, entity } = this.props;
登录后复制

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

const { store, form, loading, errors, entity:contact } = this.props;
登录后复制

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( )
登录后复制

简写为:

// 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];
登录后复制

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

const odd = [1, 3, 5 ];
const nums = [2, ...odd, 4 , 6];
登录后复制

也可以将展开运算符和 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 }
登录后复制

10、强制参数

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

function foo(bar) {
  if(bar === undefined) {
    throw new Error('Missing parameter!');
  }
  return bar;
}
登录后复制

简写为:

mandatory = ( ) => {
  throw new Error('Missing parameter!');
}
foo = (bar = mandatory( )) => {
  return bar;
}
登录后复制

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];
    }
  }
}
登录后复制

简写为:

pet = pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy');
console.log(pet); // { type: 'Dog', name: 'Tommy' }
登录后复制

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
登录后复制

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

// 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
登录后复制

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

13、双位操作符

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

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

Math.floor(4.9) === 4  //true
登录后复制

简写为:

~~4.9 === 4  //true
登录后复制

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

以上是JavaScript开发人员需要知道的简写技巧(高级篇)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

深度比较:VSCode和Visual Studio的功能差异 深度比较:VSCode和Visual Studio的功能差异 Mar 25, 2024 pm 05:33 PM

标题:深度比较:VSCode和VisualStudio的功能差异,需要具体代码示例​无论是编写前端代码还是后端代码,开发者常常需要选择一个适合自己的集成开发环境(IDE)来提高工作效率。在众多IDE中,VSCode和VisualStudio是颇受欢迎的两款产品。本文将深度比较这两款IDE的功能差异,并通过具体的代码示例进行展示。VSCode是由微软推出的

layui属于前端框架吗 layui属于前端框架吗 Apr 01, 2024 pm 11:36 PM

答案:是。layui 是一个前端框架,提供了一系列预定义的组件和工具,用于构建现代化的 web 应用程序,包括界面组件、数据操作、图表、动画和响应式设计等功能。

ECharts是否依赖于jQuery?深入分析 ECharts是否依赖于jQuery?深入分析 Feb 27, 2024 am 08:39 AM

ECharts是否需要依赖jQuery?详细解读,需要具体代码示例ECharts是一个优秀的数据可视化库,提供了丰富的图表类型和交互功能,广泛应用于Web开发中。在使用ECharts时,很多人会有一个疑问:ECharts是否需要依赖jQuery呢?本文将对此进行详细解读,并给出具体的代码示例。首先,要明确的是,ECharts本身并不依赖jQuery,它是一个

JavaScript开发中的模板引擎选择与使用经验分享 JavaScript开发中的模板引擎选择与使用经验分享 Nov 04, 2023 am 11:42 AM

JavaScript开发中的模板引擎选择与使用经验分享引言:在现代前端开发中,模板引擎(TemplateEngine)扮演着至关重要的角色。它们能够使开发者更加高效地组织和管理大量的动态数据,并有效地将数据与界面展示分离开来。同时,选择合适的模板引擎也能够为开发者带来更好的开发体验和性能优化。然而,在众多的JavaScript模板引擎中,该选择哪一个呢?接

vscode一般用来写什么 vscode一般用来写什么 Mar 14, 2024 pm 05:54 PM

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持,并可通过扩展插件支持更多语言,包括 Rust、C#、Objective-C、PHP、Ruby、Swift、SQL、XML 等。

JavaScript中如何从指定DOM节点下使用XPath进行查找? JavaScript中如何从指定DOM节点下使用XPath进行查找? Apr 04, 2025 pm 11:15 PM

DOM节点下XPath查找方法详解在JavaScript中,我们经常需要根据XPath表达式从DOM树中查找特定的节点。如果需要从某�...

SAP公布大量生成式AI新功能 增强Datasphere平台 SAP公布大量生成式AI新功能 增强Datasphere平台 Mar 07, 2024 pm 06:55 PM

SAP正在推出大量的生成式AI新功能,并且这些功能将很快在SAPDatasphere平台中提供。SAP表示,最新的更新功能将为用户提供更直观的业务数据交互体验,并有助于推动企业更智能化的转型。这些新功能包括copilot工具,可自动执行各种数据分析任务,以及支持更高级生成式AI工作负载的矢量数据库功能。此外,还推出了新的知识图谱,可揭示复杂数据集中的各种洞察和模式。这些功能的引入将为用户带来更高效的工作流程,增强数据分析能力,并为企业决策提供更全面的支持。SAPDatasphere于2023年3

JavaScript中如何高效计算两点之间的角度? JavaScript中如何高效计算两点之间的角度? Apr 04, 2025 pm 07:36 PM

JavaScript中计算两点之间角度的巧妙方法在JavaScript中,经常会遇到需要计算一个点相对于另一个点的角度(弧度�...

See all articles