JavaScript简写技巧

2023-10-27

  1. 声明变量
//Longhand 
let x; 
let y = 20; 
//Shorthand 
let x, y = 20;
  1. 给多个变量赋值
    我们可以使用数组解构来在一行中给多个变量赋值。
//Longhand 
let a, b, c; 
a = 5; 
b = 8; 
c = 12;

//Shorthand 
let [a, b, c] = [5, 8, 12];
  1. 三元运算符
    我们可以使用三元(条件)运算符在这里节省 5 行代码。
//Longhand 
let marks = 26; 
let result; 
if(marks >= 30){
 result = 'Pass'; 
}else{ 
 result = 'Fail'; 
} 
//Shorthand 
let result = marks >= 30 ? 'Pass' : 'Fail';
  1. 赋默认值
    我们可以使用 OR(||) 短路运算来给一个变量赋默认值,如果预期值不正确的情况下。
//Longhand 
let imagePath; 
let path = getImagePath(); 
if(path !== null && path !== undefined && path !== '') { 
  imagePath = path; 
} else { 
  imagePath = 'default.jpg'; 
} 
//Shorthand 
let imagePath = getImagePath() || 'default.jpg';
  1. 与 (&&) 短路运算
    如果你只有当某个变量为 true 时调用一个函数,那么你可以使用与 (&&)短路形式书写。
//Longhand 
if (isLoggedin) {
 goToHomepage(); 
} 
//Shorthand 
isLoggedin && goToHomepage();

当你在 React 中想要有条件地渲染某个组件时,这个与 (&&)短路写法比较有用。例如:

<div> { this.state.isLoading && <Loading /> } </div>
  1. 交换两个变量
    为了交换两个变量,我们通常使用第三个变量。我们可以使用数组解构赋值来交换两个变量。
let x = 'Hello', y = 55; 
//Longhand 
const temp = x; 
x = y; 
y = temp; 
//Shorthand 
[x, y] = [y, x];
  1. 箭头函数
//Longhand 
function add(num1, num2) { 
   return num1 + num2; 
} 
//Shorthand 
const add = (num1, num2) => num1 + num2;
  1. 模板字符串
    我们一般使用 + 运算符来连接字符串变量。使用 ES6 的模板字符串,我们可以用一种更简单的方法实现这一点。
//Longhand 
console.log('You got a missed call from ' + number + ' at ' + time); 
//Shorthand 
console.log(`You got a missed call from ${number} at ${time}`);
  1. 多行字符串
    对于多行字符串,我们一般使用 + 运算符以及一个新行转义字符(\n)。我们可以使用 (`) 以一种更简单的方式实现。
//Longhand 
console.log('JavaScript, often abbreviated as JS, is a\n' + 'programming language that conforms to the \n' + 
'ECMAScript specification. JavaScript is high-level,\n' + 
'often just-in-time compiled, and multi-paradigm.' ); 
//Shorthand 
console.log(`JavaScript, often abbreviated as JS, is a programming language that conforms to the ECMAScript specification. JavaScript is high-level, often just-in-time compiled, and multi-paradigm.`);
  1. 多条件检查
    对于多个值匹配,我们可以将所有的值放到数组中,然后使用indexOf()或includes()方法。
//Longhand 
if (value === 1 || value === 'one' || value === 2 || value === 'two') { 
     // Execute some code 
} 
// Shorthand 1
if ([1, 'one', 2, 'two'].indexOf(value) >= 0) { 
    // Execute some code 
}
// Shorthand 2
if ([1, 'one', 2, 'two'].includes(value)) { 
    // Execute some code 
}
  1. 对象属性复制
    如果变量名和对象的属性名相同,那么我们只需要在对象语句中声明变量名,而不是同时声明键和值。JavaScript 会自动将键作为变量的名,将值作为变量的值。
let firstname = 'Amitav'; 
let lastname = 'Mishra'; 
//Longhand 
let obj = {firstname: firstname, lastname: lastname}; 
//Shorthand 
let obj = {firstname, lastname};
  1. 字符串转成数字
    有一些内置的方法,例如parseInt和parseFloat可以用来将字符串转为数字。我们还可以简单地在字符串前提供一个一元运算符 (+) 来实现这一点。
//Longhand 
let total = parseInt('453'); 
let average = parseFloat('42.6'); 
//Shorthand 
let total = +'453'; 
let average = +'42.6';
  1. 重复一个字符串多次
    为了重复一个字符串 N 次,你可以使用for循环。但是使用repeat()方法,我们可以一行代码就搞定。
//Longhand 
let str = ''; 
for(let i = 0; i < 5; i ++) { 
  str += 'Hello '; 
} 
console.log(str); // Hello Hello Hello Hello Hello 
// Shorthand 
'Hello '.repeat(5);

提示: 想要给某人发 100 遍“sorry”来道歉吗?用 repeat() 方法试试吧。如果你想要每次在新的一行重复字符串,可以在字符串后面加一个 \n 。

'sorry\n'.repeat(100);
  1. 指数幂
    我们可以使用Math.pow()方法来得到一个数字的幂。有一种更短的语法来实现,即双星号 (**)。
//Longhand 
const power = Math.pow(4, 3); // 64 
// Shorthand 
const power = 4**3; // 64
  1. 双非位运算符 ()
    双非位运算符是Math.floor()方法的缩写。
//Longhand 
const floor = Math.floor(6.8); // 6 
// Shorthand 
const floor = ~~6.8; // 6
  1. 找出数组中的最大和最小数字
    我们可以使用 for 循环来遍历数组中的每一个值,然后找出最大或最小值。我们还可以使用 Array.reduce() 方法来找出数组中的最大和最小数字。
    但是使用扩展符号,我们一行就可以实现。
// Shorthand 
const arr = [2, 8, 15, 4]; 
Math.max(...arr); // 15 
Math.min(...arr); // 2
  1. For 循环
    为了遍历一个数组,我们一般使用传统的for循环。我们可以使用for…of来遍历数组。为了获取每个值的索引,我们可以使用for…in循环。
    l
et arr = [10, 20, 30, 40]; 
//Longhand 
for (let i = 0; i < arr.length; i++) { 
  console.log(arr[i]); 
} 
//Shorthand 
//for of loop 
for (const val of arr) { 
  console.log(val); 
} 
//for in loop 
for (const index in arr) { 
  console.log(arr[index]); 
}
我们还可以使用for...in循环来遍历对象属性。
let obj = {x: 20, y: 50}; 
for (const key in obj) { 
  console.log(obj[key]); 
}
  1. 合并数组
let arr1 = [20, 30]; 
//Longhand 
let arr2 = arr1.concat([60, 80]); 
// [20, 30, 60, 80] 
//Shorthand 
let arr2 = [...arr1, 60, 80]; 
// [20, 30, 60, 80]
  1. 深拷贝多级对象
    为了深拷贝一个多级对象,我们要遍历每一个属性并检查当前属性是否包含一个对象。如果当前属性包含一个对象,然后要将当前属性值作为参数递归调用相同的方法(例如,嵌套的对象)。
    我们可以使用JSON.stringify()和JSON.parse(),如果我们的对象不包含函数、undefined、NaN 或日期值的话。
    如果有一个单级对象,例如没有嵌套的对象,那么我们也可以使用扩展符来实现深拷贝。
let obj = {x: 20, y: {z: 30}}; 
//Longhand 
const makeDeepClone = (obj) => { 
  let newObject = {}; 
  Object.keys(obj).map(key => { 
    if(typeof obj[key] === 'object'){ 
      newObject[key] = makeDeepClone(obj[key]); 
    } else { 
      newObject[key] = obj[key]; 
    } 
  }); 
 return newObject; 
} 
const cloneObj = makeDeepClone(obj); 
//Shorthand 
const cloneObj = JSON.parse(JSON.stringify(obj));
//Shorthand for single level object
let obj = {x: 20, y: 'hello'};
const cloneObj = {...obj};1. 声明变量
  1. 获取字符串中的字符
let str = 'jscurious.com'; 
//Longhand 
str.charAt(2); // c 
//Shorthand 
str[2]; // c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript简写技巧 的相关文章

  • Flutter 状态管理之provide

    什么是状态管理 通俗点来讲就是 对一个数据源的统一管理 比如 列表和详情都有收藏按钮 在详情收藏之后 列表也要同步收藏状态 类似的还有签到 领红包 已读等多种业务场景 在项目小 业务简单的时候可能还不需要或者比较好管理 当项目逐渐庞大 业务

随机推荐

  • PGSQL获取过去30天,7天,昨天,今天的数据

    select count as allBookCount count filter where createtime between SELECT current date interval 30 day and current date
  • com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver的区别

    一 驱动报错 driverClassName com mysql jdbc Driver url jdbc mysql db1 useUnicode true characterEncoding utf8 useSSL false user
  • ChatGPT fine tune微调+prompt介绍

    目录 1 如何使用ChatGPT 1 1 图片生成 image generation 1 2 对话 chat 1 3 中文纠错 Chinese Spelling Correct 1 4 关键词提取 keyword extract 1 5 抽
  • Blender的一些使用小结,在辣椒酱基础上加了点,会持续更新

    Blender的一些使用小结 在辣椒酱基础上加了点 会持续更新 操作 快捷键 边线折痕 编辑模式 SHIFT E 点倒角 编辑模式 Ctrl Shift B 按P选择内外 加选 编辑模式 Ctrl 减选 编辑模式 Ctrl 分块选择 编辑模
  • 机器学习如何提高训练模型结果的准确度

    提高输出结果的准确度可以从以下几个方面入手 1 调整超参数 可以尝试调整模型的超参数 比如学习率 迭代次数 隐层维度 卷积核大小等 找到最优的超参数组合来提高准确度 2 增加训练数据 增加训练数据可以让模型更好地学习到数据的特征 从而提高准
  • sql分别从两个表取出_SQL--多表查询

    前几篇文章中 我们查询的数据都是在一张表中进行操作的 而在实际工作中 我们经常需要在不同的表中查询数据 今天我们来学习从多张表中获取数据的方法 多表查询 表的加法 表的联结 用SQL联结解决业务问题 case 表达式 1 表的加法 unio
  • 机器学习三-xmeans

    能力有限 只是表面上理解了公式和图所表达的内容 论文参见 点击打开链接 已有文章分析参见 点击打开链接 具体java代码实现 点击打开链接 核心应该是 分割前BIC分数 gt 分割后BIC分数 结论是 原簇可分割为两个新簇 图示如下 公式如
  • 模板观念和函数模板

    模板 模板是C 的一种特性 允许函数或类 对象 通过泛型的形式表现或运行 模板可以使函数或类在对应不同的型别的时候正常工作 无需为每一个型别都写一份代码 两种模板 类模板 使用泛型参数的类 函数模板 使用泛型参数的函数 模板实例化 模板的声
  • AcWing.102. 最佳牛围栏(二分&&双指针&&前缀和)

    输入样例 10 6 6 4 2 10 3 8 5 9 4 1 输出样例 6500 解析 1 由题意可知答案位于 1 2000以内 所以可以二分这个区间 2 对于每个mid 我们要看是否存在一个区间 这个区间的平均值大于mid 如果存在返回t
  • 使用Spring StateMachine框架实现状态机

    Spring StateMachine框架可能对于大部分使用Spring的开发者来说还比较生僻 该框架目前差不多也才刚满一岁多 它的主要功能是帮助开发者简化状态机的开发过程 让状态机结构更加层次化 前几天刚刚发布了它的第三个Release版
  • 程序媛怎样规划自己的人生

    上个月我跟一个很优秀的程序媛聊天 她感到职业上有些迷茫 希望向我寻求答案 我让她先自己想一想 说这个月专门写一篇文章来讲一讲 其实我在等一个我自己的答案 但是这个月还是没等到 但是说过的话要算数 我还是写一篇来聊聊这个问题 我不能回答其他任
  • 自定义QDockWidget的标题栏

    左侧为自定义 右侧为原始 通过QDockWidget setTitleBarWidget 实现标题栏自定义 MDockWidget cpp include MDockWidget h include
  • Elasticsearch 安装配置 外网访问 及 后台启动

    本文转自http www jianshu com p 658961f707d8 作者 咪博士 感谢咪博士分享 Elasticsearch的安装总体来说还是相当简单的 当然中间也会有些小坑 不过大家也不必太过担心 咪博士将给大家详细演示如何在
  • qq批量登录软件_QQ账号永久冻结

    昨天上午我的QQ被永久冻结了 理由是批量加好友批量登录啥的 这个理由看的我也是一脸懵逼 我一个学生QQ的好友也就一百多个 我的QQ主要也就是打打游戏跟朋友养个花火聊天 怎么就批量加好友了呢 封号前一天我还跟朋友打游戏打到后半夜 第二天直接给
  • Python--爬取天气网站天气数据并进行数据分析

    目的 从天气网站中爬取数据 生成excel表格 里面存储南昌市近十一年的天气情况 并对爬取产生的数据进行数据分析 第一步 编写代码进行数据爬取 首先 导入 requests 模块 并调用函数 requests get 从天气的网站上面获 取
  • 【满分】【华为OD机试真题2023 JS】获得完美走位

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 获得完美走位 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 在第一人称射击游戏中 玩家通过键盘的A S D W四个按键控制游戏人物分别向左 向后 向右 向前进行
  • xpath解析页面中文乱码

    res requests get url headers headers html etree HTML res text 这样写后面进行处理时得到的内容乱码了 改为以下形式 可以正常显示中文 html etree HTML res con
  • 前端小游戏2048(一步步详解附带源代码,源码上传到csdn,可以免费下载)

    2048小游戏 2048是前端开发必经的一个小游戏 2048小游戏包含了HTML CSS和JavaScript 简介 2048 是一款益智小游戏 这款游戏是由年仅19岁的意大利程序员加布里勒希鲁尼 Gabriele Cirulli 开发出来
  • python随机数模块——random

    近期遇到了一个很常见又不是很注意的随机数问题 随机数 gt 伪随机数 在这里特地的写下来作为提醒 随机数一般情况下我们直接使用random 但是random这个随机数有点假 伪随机 解析如下 Python3实现随机数 random是用于生成
  • JavaScript简写技巧

    声明变量 Longhand let x let y 20 Shorthand let x y 20 给多个变量赋值 我们可以使用数组解构来在一行中给多个变量赋值 Longhand let a b c a 5 b 8 c 12 Shortha