javascript简写常用的12个技巧(可以大大减少你的js代码量)


Posted in Javascript onMarch 28, 2020

前言

本文主要给大家分享了javascript简写常用的12个技巧,无论你是初学者还是资深人士,都值得一读!下面话不多说了,来一起看看详细的介绍:

1. 空(null, undefined)验证

当我们创建了一个新的变量,我们通常会去验证该变量的值是否为空(null)或者未定义(undefined)。这对于JavaScript编程来说,是一个经常要考虑到的验证。

如果直接写,像下面这样:

if (variable1 !== null || variable1 !== undefined || variable1 !== ''){
 let variable2 = variable1;
}

我们可以使用一个更加简洁的版本

let variable2 = variable1 || '';

如果你不信,可以在谷歌浏览器开发者模式下的控制台中试试!

//值为null的例子
let variable1 = null;
let variable2 = variable1 || '';
console.log(variable2);
//输出: ''
//值为undefined的例子
let variable1 = undefined;
let variable2 = variable1 || '';
console.log(variable2);
//输出: ''
//正常情况
let variable1 = 'hi there';
let variable2 = variable1 || '';
console.log(variable2);
//输出: 'hi there'

在这里要注意的是,你在调试完一组代码后要刷新下页面,或者定义不同的变量,不然会报错

不过三水点靠木小编更喜欢用下面的代码

if("undefined" != typeof downlm){ 
if(downlm=="soft"){ 
document.write('成功'); 
} 
}

判断downlm是否定义

2. 数组

这个好像比较简单!

非优化代码:

let a = new Array(); a[0] = "myString1"; a[1] = "myString2"; a[2] = "myString3";

优化代码:

let a = ["myString1", "myString2", "myString3"];

3. if true .. else 的优化

let big;
if (x > 10) {
big = true;
}
else {
big = false;
}

简化后:

let big = x > 10 ? true : false;

这是三目运算,当判断条件和结果都只有一个的时候可以使用。

极大的简化了代码量!

let big = (x > 10);
let x = 3,
big = (x > 10) ? "greater 10" : (x < 5) ? "less 5" : "between 5 and 10";
console.log(big); //"less 5"
let x = 20,
big = {true: x>10, false : x< =10};
console.log(big); //"Object {true=true, false=false}"

4. 变量声明

尽管JavaScript会自动讲变量上提(hoist),使用该方法可以讲所有的变量都在函数的头部用一行搞定。

优化钱:

let x;
let y;
let z = 3;

优化后:

let x, y, z=3;

5. 赋值语句的简化

简化前:

x=x+1;
minusCount = minusCount - 1;
y=y*10;

简化后:

x++;
minusCount --;
y*=10;

假设x=10,y=5,那么基本的算术操作可以使用如下的简写方式:

x += y // x=15
x -= y // x=5
x *= y // x=50
x /= y // x=2
x %= y // x=0

6. 避免使用RegExp对象

简化前:

var re = new RegExp("\d+(.)+\d+","igm"),
result = re.exrc("padding 01234 text text 56789 padding");
console.log(result);//"01234 text text 56789"

简化后:

var result = /d+(.)+d+/igm.exec("padding 01234 text text 56789 padding");
console.log(result); //"01234 text text 56789"

7. If 条件优化

简化前:

if (likeJavaScript === true)

简化后:

if (likeJavaScript)

我们再来个判断非真的例子:

let c;
if ( c!= true ) {
// do something...
}

简化后:

let c;
if ( !c ) {
// do something...
}

9. 函数参数优化

我个人倾向于使用获取对象元素的方式来访问函数参数,当然这个见仁见智啦!

通常使用的版本:

function myFunction( myString, myNumber, myObject, myArray, myBoolean ) {
// do something...
}
myFunction( "String", 1, [], {}, true );

我喜欢的版本:

function myFunction() {
/* 注释部分
console.log( arguments.length ); // 返回 5
for ( i = 0; i < arguments.length; i++ ) {
console.log( typeof arguments[i] ); // 返回 string, number, object, object, boolean
}
*/
}
myFunction( "String", 1, [], {}, true );

译者注:原文下方有评论表示不建议用楼主的方法,使用第一种方法函数参数的顺序是可以变动的,第二种你就要小心了。

10. charAt()的替代品

简化前:

"myString".charAt(0);

简化后:

"myString"[0];//返回'm'

译者注:我相信用第一种方法的人已经不多了吧!

11. 函数调用还可以更短

简化前:

function x() {console.log('x')};function y() {console.log('y')};
let z = 3;
if (z == 3)
{
x();
} else
{
y();
}

简化后:

function x() {console.log('x')};function y() {console.log('y')};let z = 3;
(z==3?x:y)();

12. 如何优雅的表示大数字

在JavaScript中,有一个简写数字的方法,也许你忽略了。1e7表示10000000。

简化前:

for (let i = 0; i < 10000; i++) {

简化后:

for (let i = 0; i < 1e7; i++) {

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

译者:Fundebug

译文:http://www.cnblogs.com/fundeb...

原文:https://hackernoon.com/12-ama...

Javascript 相关文章推荐
javascript 命名规则 变量命名规则
Feb 25 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 Javascript
几个有趣的Javascript Hack
Jul 24 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
Aug 14 Javascript
JS 对象属性相关(检查属性、枚举属性等)
Apr 05 Javascript
JQuery中层次选择器用法实例详解
May 18 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
详解ECMAScript6入门--Class对象
Apr 27 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 Javascript
插件导致ECharts被全量引入的坑示例解析
Sep 23 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 #Javascript
Vue.js仿微信聊天窗口展示组件功能
Aug 11 #Javascript
Node.js服务器开启Gzip压缩教程
Aug 11 #Javascript
JS SetInterval 代码实现页面轮询
Aug 11 #Javascript
IScroll5实现下拉刷新上拉加载的功能实例
Aug 11 #Javascript
详谈JS中数组的迭代方法和归并方法
Aug 11 #Javascript
原生js 封装get ,post, delete 请求的实例
Aug 11 #Javascript
You might like
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
python读写ini文件示例(python读写文件)
2014/03/25 Python
python实现中文输出的两种方法
2015/05/09 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
解析python实现Lasso回归
2019/09/11 Python
提升python处理速度原理及方法实例
2019/12/25 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
机电一体化专业应届本科生求职信
2013/09/27 职场文书
自我鉴定怎么写
2013/12/05 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
Python正则表达式中flags参数的实例详解
2022/04/01 Python
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技