如何写JavaScript才能逼格更高呢?怎样才能组织JavaScript才能让别人一眼看出你不简单呢?是否很期待别人在看完你的代码之后感叹一句“原来还可以这样写”呢?下面列出一些在JavaScript时的装逼技巧。

1. 匿名函数的N种写法

你知道“茴”的四种写法吗?ε=(・д・`*)ハァ… 扯淡,但你或许不知道匿名函数的好几种写法。一般情况下写匿名函数是这样的:

(function(){})();

但下面几种写法也是可以的:

!function(){}();
+function(){}();
-function(){}();
~function(){}();
~(function(){})();
void function(){}();
(function(){}());

其实细看可以看出规律,因为+-!~这些具有极高的优先级,所以右边的函数声明加上括号的部分(实际上就是函数执行的写法)就直接执行了。当然,这样的写法,没有什么区别,纯粹看装逼程度。

2. 另外一种undefined

从来不需要声明一个变量的值是undefined,因为JavaScript会自动把一个未赋值的变量置为undefined。所有如果你在代码里这么写,会被鄙视的:

var data = undefined;

但是如果你就是强迫症发作,一定要再声明一个暂时没有值的变量的时候赋上一个undefined。那你可以考虑这么做:

var data = void 0; // undefined

void 在JavaScript中是一个操作符,对传入的操作不执行并且返回undefined。void后面可以跟()来用,例如void(0),看起来是不是 很熟悉?没错,在HTML里阻止带href的默认点击操作时,都喜欢把href写成javascript:void(0),实际上也是依靠void操作不 执行的意思。

当然,除了出于装逼的原因外,实际用途上不太赞成使用void,因为void的出现是为了兼容早起ECMAScript标准中没有undefined属性。void 0的写法让代码晦涩难懂。

3. 抛弃你的if和else

当JS代码里有大量的条件逻辑判断时,那代码看起来多可怕:

if () {// ...
} else if () {// ...
} else if () {// ...
} else {// ...
}

不用我说你都猜到用什么语法来简化if-else了。没错,用||和&&,很简单的原理就不用说啦。值得一提的是,有时候用!!操作符也能简化if-else模式。例如这样:

// 普通的if-else模式
var isValid = false;
if (value && value !== 'error') {isValid = true;
}
// 使用!!符号
var isValid = !!(value && value !== 'error');

“!”是取反操作,两个“!”自然是负负得正了。

4. 不加分号

关于 JavaScript要不要加分号的争论已经吵了好几年。Google的JavaScript语法指南告诉我们要加分号,很多JavaScript语法书 籍也告诉我们加上分号更安全。然而,分号加不加,全靠个人对代码的写法,你确信写得足够安全的话,不加分号显得更加高大上。

5. 赶上ES6的早班车

ES6即将在年底正式发布,赶时髦的开发者们,赶快在自己的代码里用起来。用上module声明,写写class,捣鼓一下Map,这些都会让你的代码逼格更高。神马?你都不会用?那也好歹在代码头部加上一个ES5的”use strict”;呀。

6. 添加AMD模块支持

给你写的代码声明一下AMD模块规范,这样别人就可以直接通过AMD的规范来加载你的模块了,如果别人没有通过规范来加载你的模块,你也可以优雅地返回一个常规的全局对象。来看看jQueryUI的写法:

(function( factory ) {if ( typeof define === "function" && define.amd ) {// AMD. Register as an anonymous module.define( [ "jquery" ], factory );} else {// Browser globalsfactory( jQuery );}
}(function( $ ) {// 这里放模块代码return $.widget;
}));

就用它来包裹你的实际代码吧,保证别人一看代码就知道你是个专业的开发者。

7. Function构造函数

很多JavaScript教程都 告诉我们,不要直接用内置对象的构造函数来创建基本变量,例如var arr = new Array(2); 的写法就应该用var arr = [1, 2];的写法来取代。但是,Function构造函数(注意是大写的Function)有点特别。Function构造函数接受的参数中,第一个是要传入 的参数名,第二个是函数内的代码(用字符串来表示)。

var f = new Function('a', 'alert(a)'); f('test'); // 将会弹出窗口显示test

或许大家疑惑了,你这样绕着写,跟function f(a) {alert(a);}比有什么好处呢?
事实上在某种情况下是有好处的,比如不能用eval的时候,你需要传入字符串内容来创建一个函数的时候。在一些JavaScript模板语言的解析,和字符串转换json对象的时候比较实用。

8. 用原生Dom接口不用jQuery

       一个傲娇的前端工程师是不需要jQuery的,前提是你经得起折腾。实际上,几乎所有的jQuery方法都可以用同样的Dom原生接口来实现,因为这货本来就是用原生接口实现的嘛,哈哈。怎样做到不用jQuery(也叫jQuery-free)呢?阮老师的博文《如何做到 jQuery-free?》 给我们很好的讲解了做法。依赖于querySelector和querySelectorAll这两个现代浏览器的接口,可以实现跟jQuery同样方便 和同样效率的Dom查找,而且其他的类似Ajax和CSS的接口同样也可以把原生方法做一些兼容方面的包装即可做到jQuery-free。

总结

上述所有的 JavaScript装逼写法,一些是为了程序易懂或者效率提高的语法糖,这样的做法是比较可取的,比如前面所说的省略if-else的做法;而有些写法 则容易造成代码晦涩难懂或者效率偏低,例如上面说的void 0的写法,实际上不可取。JavaScript语法上灵活,让大家对同一个功能有很多种不同的写法,写法上的优化是对程序结构和代码维护有很大帮助的。所 以,装逼得装得好看。

原文:http://www.html5cn.org/article-6571-1.html

教你如何塑造JavaScript牛逼形象相关推荐

  1. Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码

    美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. 可以看出 Java 8 扩 ...

  2. 教你设计一个超牛逼的本地缓存!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:ksfzhaohui juejin.im/post/5dd9 ...

  3. 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...

    玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂.... 我打开了4399小游 ...

  4. java魔剑天使_大天使之剑大神教你打造牛逼魔剑士

    大天使之剑大神教你打造牛逼魔剑士 大天使之剑哪个职业厉害?大天使之剑魔剑士怎么加点升级快?下面来看看大天使之剑大神教你打造牛逼魔剑士吧,有点长,希望对大家有帮助! 魔剑士是这个游戏升级最为快速的职业, ...

  5. python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...

    鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频? 前言 半个月前,后台有个小伙伴问我,如何将视频中的音频提取出来,并且将声音转成文字写入到 word 中,正好接下来的 ...

  6. Python设置画布大小_教你用 Python 写一个搞笑版的“笨鸟”游戏:牛逼的黄瓜

    我想你应该玩过这个鸟游戏: 想当年,小帅b和身边的朋友在玩这个游戏的时候玩到手到快废了... 今天,小帅b心血来潮,要不咱们自己用 Python 撸一个这样的游戏吧,想想还是挺好玩的. 那么接下来就是 ...

  7. 搞笑python代码_教你用 Python 写一个搞笑版的 “笨鸟” 游戏:牛逼的黄瓜

    我想你应该玩过这个鸟游戏: 想当年,小帅b和身边的朋友在玩这个游戏的时候玩到手到快废了... 今天,小帅b心血来潮,要不咱们自己用 Python 撸一个这样的游戏吧,想想还是挺好玩的. 那么接下来就是 ...

  8. python广告搞笑_教你用 Python 写一个搞笑版的“笨鸟”游戏:牛逼的黄瓜

    我想你应该玩过这个鸟游戏: 想当年,小编和身边的朋友在玩这个游戏的时候玩到手到快废了... 今天心血来潮,要不咱们自己用 Python 撸一个这样的游戏吧,想想还是挺好玩的. 首先我们分析一下这个鸟游 ...

  9. python搞笑语句_教你用 Python 写一个搞笑版的“笨鸟”游戏:牛逼的黄瓜

    我想你应该玩过这个鸟游戏: 想当年,小编和身边的朋友在玩这个游戏的时候玩到手到快废了... 今天心血来潮,要不咱们自己用 Python 撸一个这样的游戏吧,想想还是挺好玩的. 首先我们分析一下这个鸟游 ...

最新文章

  1. RedHat Enterprise 5.1下OpenLDAP的配置及PAMNSS的配置
  2. [trouble shoot]atol和atoll
  3. 详解proxy_pass、upstream与resolver
  4. kafka mysql事务_【干货】Kafka 事务特性分析
  5. 图像目标分割_1 概述
  6. tcmalloc编译
  7. oracle找出大于1g的表,表占用太大空间问题!
  8. 如何下载指定版本的elasticsearch和kibana
  9. 如何设置二进制某一位的值_mysql参数设置--max_allowed_packet 值如何调整?
  10. 统计信号处理基础——估计与检测理论 Kay
  11. 计算机统计分析spss试卷,《SPSS计算机统计分析方法》试卷A卷
  12. Lync学习资料分享
  13. 车牌识别算法 基于yolov5的车牌检测+crnn中文车牌识别 支持12种中文车牌识别
  14. Paper 已经过时——计算机时代科学传播方式的变革
  15. 数学文章 关于圆锥体积公式的证明
  16. 计算机编程小学生有必要学吗,小学生有必要学少儿编程吗
  17. “蚂蚁呀嘿” 刷屏的背后:算法工程师带你理性解构神曲
  18. 【Windows】Windows10家庭版永久关闭自动更新
  19. [FineReport帆软]决策报表frm中实现添加监控声音报警
  20. 机器学习中的ground truth

热门文章

  1. 约数研究(洛谷-P1403)
  2. 谁考了第k名(信息学奥赛一本通-T1176)
  3. GhostNet网络
  4. python读取Excel工作簿、工作表
  5. 16进制 hbase phoenix_HBase 和 Phoenix 的使用
  6. 云筑网认证_云筑网集采平台怎么录入分包单位
  7. 测试用例怎么写_如何高效组织自动化测试用例
  8. Python实现RabbitMQ中6种消息模型(转)
  9. 解压mysql server_2018-05-09 MySql-server解压缩版安装及配置
  10. ieee latex 双栏_用Latex写学术论文: IEEE Latex模板和文档设置(\documentclass)