什么是“黑话”
黑话,本指旧时江湖帮会人物的暗语、暗号,往往见于小说,后指流行于某一特殊行业中,非局外人所能了解的语言。而本文涉及到的“黑话”,其实是一些利用语言的特征使用的一些不常见的奇淫技巧,JavaScript的语法是十分简单灵活的,在项目中建议大家遵从ESLint规范编写可维护性的代码,各路神仙们也应该进行自我约束,毕竟“黑话”也并不全是什么好的东西,如果很多话可以直接讲,何必拐弯抹角的去说呢?
一.
!与!!
!为逻辑非操作符,可以应用于ECMAScript中的任何值,无论这个值是什么类型,它会被强制转化为一个布尔值变量,再对其值取反。
!!只是单纯的将操作数执行两次逻辑非,它能将任意类型的值转化为相应的布尔值,它包含的步骤为:
将一个值转化为布尔值;
将其取反;
再次取反。
二.
+
在变量值前使用+的本意是将变量转换为数字,在一个函数接受数字类型的参数时特别有用:
00001.
+'1' // 1
00002.
00003.
+'-1' // '-1
00004.
00005.
+[] // 0
00006.
00007.
+{} // NaN
00008.
根据观察,+a与a * 1结果类似。除此之外,使用+也可以作为立即执行函数:+function() {}(),等效于(function(){})()。
字符串与数字相加时会将数值默认转为字符串,因此有了一下将数字转为字符串的快捷方法:'' + 1。
三.
== 与 ===
==为相等运算符,操作符会先将左右两边的操作数强制转型,转换为相同的操作数,再进行相等性比较。
===为全等运算符,它除了在比较时不会将操作数强制转型,其余相等判断与==一致。
简单而言, ==用于判断值是否相等, ===判断值与类型是否都相等,因此使用全等运算符判断操作数会更准确
四.
3e9
科学计数法是一种数学术语,将一个数表示为a乘以10的n次方,如光速30万公里每秒,在计算中通常将米做单位,则记为:300000000m/s,而在JavaScript中我们可使用科学计数法 3e9表示。
在这里举几个科学计数法的示例:
00001.
1e5; // 100000
00002.
00003.
2e-4; // 0.0002
00004.
00005.
-3e3; // -3000
00006.
Number对象有toExponential(fractionDigits)方法以科学计数法返回该数值的字符串表示形式,参数fractionDigits可选,用于用来指定小数点后有几位数字,例如:(179000).toExponential(); // "1.79e+5"。
以下情况JavaScript会自动将数值转为科学计数法表示:
§
小数点前的数字多于21位。
§
§
小数点后的零多于5个。
§
五.
.5px
通常某些人习惯省略0.开头的数字,常见于数值计算、css属性中,比如0.5px可直接写为.5px,0.2 * 0.3可写为:.2 * .3